7

シート 1 の列 a とシート 2 の列 a を比較してから、列 b の対応する値をシート 1 からシート 2 の列 b (列 a の値が一致する場所) にコピーしようとしています。これを行う方法について調べてみましたが、マクロを作成する必要があるのか​​ 、それとももっと簡単な方法があるのか​​ 、おそらくVLOOKUPまたはMATCHですか?ただし、これらの機能がどのように機能するかについてはよくわかりません。

また、違いがある場合は、シート 2 の列 b に値が繰り返されます。

シート 1

12AT8001    1
12AT8002    2
12AT8003    3
12AT8004    4
12AT8005    5
12AT8006    6

シート 2

12AT8001
12AT8001
12AT8001
12AT8001
12AT8001
12AT8002
12AT8002
12AT8002
12AT8002
12AT8002
12AT8003
12AT8003
12AT8003
12AT8003
12AT8003
4

4 に答える 4

5

Vlookup参照値 (列 A、シート 1) が昇順であれば良いです。別のオプションはインデックスと一致で、順序に関係なく使用できます (シート 1 の列 a の値が一意である限り)。

これは、シート 2 の列 B に入力するものです。

=INDEX(Sheet1!A$1:B$6,MATCH(A1,Sheet1!A$1:A$6),2)

Sheet1!A$1:B$6とを名前付き範囲として設定Sheet1!A$1:A$6すると、ユーザーフレンドリーになります。

于 2012-04-17T15:31:47.577 に答える
3

kmcamara が発見したように、これはまさに VLOOKUP が解決しようとしている種類の問題であり、vlookup を使用することは間違いなく仕事を成し遂げるための最も簡単な代替方法です。

lookup_value、検索対象の table_range、および戻り値の column_index の 3 つのパラメーターに加えて、VLOOKUP はオプションの 4 番目の引数をとり、Excel のドキュメントでは「range_lookup」と呼ばれています。

DeathApril の説明を拡張すると、この引数が TRUE (または 1) に設定されているか省略されている場合、関数が通常は「正しい」値。このデフォルトの動作では、関数は完全一致が見つかった場合はそれに基づいて値を返し、完全一致が見つからなかった場合は近似一致に基づいて値を返します。

一致が概算である場合、関数によって返される値は、lookup_value より小さい次の最大値に基づきます。たとえば、「12AT8003」がシート 1 のテーブルにない場合、「12AT8002」はテーブル範囲のルックアップ列の最大値であり、それよりも小さいため、シート 2 のその値のルックアップ式は「2」を返します。 「12AT8003」より。(VLOOKUP の既定の動作は、たとえば、税率表で税率を検索することが目的の場合、完全に理にかなっています。)

ただし、4 番目の引数が FALSE (または 0) に設定されている場合、VLOOKUP は完全に一致する場合にのみルックアップ値を返し、一致しない場合はエラー値 #N/A を返します。不一致を適切にキャッチするために、正確な VLOOKUP を IFERROR 関数でラップするのが現在の通常の方法です。IFERROR が導入される前は、VLOOKUP 式を使用して一致があったかどうかを 1 回チェックし、実際の一致値を返すために 1 回、IF 関数で一致がチェックされませんでした。

最初はマスターするのが難しいですが、deusxmach1na が提案したソリューションは、ルックアップ列の左側にある列またはリストの値を返すために使用できる VLOOKUP の強力な代替手段のバリエーションであり、さらに完全に一致する場合を処理するように拡張されています。 1 つ以上の基準が必要であるか、複数の基準間で OR および AND 一致条件を組み込むように変更されています。

kcamara が選択したソリューションを繰り返すと、この問題の VLOOKUP 式は次のようになります。

   =VLOOKUP(A1,Sheet1!A$1:B$600,2,FALSE)
于 2013-01-20T02:03:16.813 に答える
0

真理値表を作成し、SUMPRODUCT を使用して値を取得します。これをシート 2 のセル B1 にコピーし、必要なだけ下にコピーします
=SUMPRODUCT(--($A1 = Sheet1!$A:$A), Sheet1!$B:$B)
。真理値表を作成する部分は次のとおりです。
--($A1 = Sheet1!$A:$A)
これにより、0 と 1 の配列が返されます。値が一致する場合は 1、一致しない場合は 0 です。次に、その後のコンマは基本的に、私が「面白い」行列乗算と呼んでいるものを実行し、結果を返します。私はあなたの質問を誤解しているかもしれませんが、Sheet1 の列 A に重複した値がありますか?

于 2012-04-17T15:50:00.353 に答える
-1

試す:

sheet 2 a1 =vlookup(sheet2a1,sheet1$a$1:$b$6,2)

次に、下にドラッグします。

それはうまくいくはずです。

于 2012-09-06T23:36:07.297 に答える