
Excel ワークブックに 3 つのシートがあり、シート 1 の列 C とシート 2 の列 C を比較し、同じ数値がどこかに存在する場合は、シート 2 の列 G の値をシート 3 の列 G に配置したいと考えています。
答え1
sheet1 があるとします:
a b 1
a b 2
a b 3
a b 4
a b 5
そしてシート2:
a b 6 ... x
a b 2 ... gg
a b 7 ... x
a b 5 ... zz
a b 8 ... x
そして、シート3では(列A~Fの有無にかかわらず)
a b 2 ... gg
a b 5 ... zz
最も簡単な解決策ですが、多少の手動操作が必要です。
次の数式を使用して、sheet2 に列を追加します (行 1 にヘッダーがあると仮定)
=IF(ISERROR(MATCH(C2,Sheet1!$C$2:$C$100000,0)),FALSE,TRUE)
sheet2にフィルターを追加し、TRUEをフィルターします。コピーしてsheet3に貼り付けます。
数式のみを使用する(手動でのコピーと貼り付けは行わない):
「真の場合、コピー」という式は、Excel に本来存在しません。式を含むセルは、他のセルの値 (そのセルの値だけではなく) を変更できる必要があります。これはスプレッドシートの動作に反しており、あらゆる種類の厄介な循環ロジックと低速な計算につながります。代わりに、コピー先のセル (Sheet3!G2...) に式を入力していると想像してください。この式は、Sheet2!G 列を参照し、参照その価値(ただしハードコピーではありません)。
したがって、Sheet3!G2 に次のように入力できます。
=IF(ISERROR(MATCH(Sheet2!C2,Sheet1!$C$2:$C$100000,0)),"",Sheet2!G2)
比較データもありますが、一致が発生しなかった空の行もたくさんあります。空白を削除するには、再度フィルターを追加できます。
数式のみを使用してこの問題を完全に解決するには、次のように sheet2 内の一致に番号を付ける必要があります。
a b 6 ... x 0
a b 2 ... gg 1
a b 7 ... x 1
a b 5 ... zz 2
a b 8 ... x 2
Sheet2 の列 H で、H2 から始まる次の数式を使用します。
=IF(ISERROR(MATCH(C2,Sheet1!$C$2:$C$100000,0)),IF(ROW() = 2,0,H1+1), IF(ROW() = 2,1,H1+1))
次に、G2 から始めて、sheet3 の列 G で INDEX、MATCH、ROW 関数を使用して一致を検索します。
=INDEX(Sheet2!$G$2:$G$100000,MATCH(ROW()-1,Sheet2!$H$2:$H$100000,0))