同じワークブック内の 3 つのシートにある Excel 数式では、2 つのシートの 1 つの列を比較し、3 番目の列の番号をシート 3 に配置する必要があります。

同じワークブック内の 3 つのシートにある Excel 数式では、2 つのシートの 1 つの列を比較し、3 番目の列の番号をシート 3 に配置する必要があります。

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))

関連情報