web-dev-qa-db-ja.com

2つの列を比較し、Excelで特定の隣接セルを返す

ifvlookupmatchiserror関数の組み合わせを使用していますが、残念ながら正しい式が見つかりませんでした。

一致する2つの列を比較するのは簡単です。難しい部分は、一致が見つかると特定のセルを返していました。

だから私が扱っているのはこのようなものです:

Header     Column A   Column B   Column C  Column D
Row 1      111        AAA        112
Row 2      222        BBB        111
Row 3      333        CCC        221
Row 4      444        DDD        333

Column Aの列の値とColumn Cを一致させようとしています。一致する場合は、Column Bの対応する値をColumn Dに設定する必要があります。あまり良い説明ではありませんが、探しているものを視覚的に示すことができます

Header     Column A   Column B   Column C  Column D
Row 2      111        AAA        112
Row 3      222        BBB        111       AAA
Row 4      333        CCC        221
Row 5      444        DDD        333       CCC

Cells A1はcell C3と一致するため、DB2を返すようにします

5と同じです。 A4C5が一致するため、B5の値が必要です

これが理にかなっているかどうか、またはさらに説明が必要かどうかを教えてください。

6
aragorn marsden

この質問 と非常に似ており、範囲にいくつかの変更がありますが、列Dに同じ式を提案します。

_=IFERROR(VLOOKUP(C1, A:B, 2, 0), "")
_

マッチを使用したい場合は、次のようにINDEXも使用する必要があります。

_=IFERROR(INDEX(B:B, MATCH(C1, A:A, 0)), "")
_

しかし、これは私にとって非常に長く、2つの関数(またはIFERRORの仕組みがわからない場合は3つ)を適切に使用する方法を知る必要があります。

注:=IFERROR()は、場合によっては=IF()=ISERROR()の代わりになります:)

8
Jerry

D1に必要なものは次のとおりです。=VLOOKUP(C1, $A$1:$B$4, 2, FALSE)

その後、これを列Dの残りの部分にコピーできるはずです。

1
tonyj444

B列とC列を入れ替えるをお勧めします。理由は、これから説明します。次に、D2で次のように入力します:= VLOOKUP(A2、B2:C4、2、FALSE)

最後に、残りのセルの数式をコピーします。

説明: VLOOKUPは、最初にB2からC4(2番目の引数)の範囲でA2の値を見つけます。注:VLOOKUPは常にこの範囲の最初の列を検索します。これが、2つの列を前に交換する必要がある理由です。何かをして。

完全に一致するものが見つかると、隣接するセルの値を返します(3番目の引数)。

つまり、3番目の引数として1を入力すると、関数は範囲の最初の列の値を返します(これは探していたのと同じ値になります)。 2を入力すると、範囲内の2番目の列の値(見つかった値の隣接するセルの右端の値)が返されます。

FALSEは、完全一致を検出していることを示します。 TRUEを入力すると、おおよその一致を検索します。

0
DK250

セルD2でコピーダウン:

=IF(COUNTIF($A$2:$A$5,C2)=0,"",VLOOKUP(C2,$A$2:$B$5,2,FALSE))
0
tigeravatar