次の内容を含むワークシートを含むワークブックがあります。 目的地ワークシート
セル B1、C1、D1 のデータは、DOD11.2 という名前の同じワークブック内のワークシートのセル A1、A2、A3 の値と等しくなければなりません (つまり、ワークシートの名前は、セル A1、A2、A3、A4 の文字列の文字 x までの文字と同じです)。
セル B2、C2、D2 のデータは、同じ DOD11.2 ワークシートのセル B1、B2、B3 の値と等しくなります。同様に、セル B3、C3、D3 は、DOD11.2 のセル C1、C2、C3 の値と等しくなり、セル B4、C4、D4 は、DOD11.2 の D1、D2、D3 の値と等しくなります。
このシーケンスをセル B6、C6、D6、B7、C7、D7 などに対して繰り返す必要がありますが、今回はそれらの値が DOD12.2 という名前のシートのセル A1、A2、A3、B1、B2、B3 などのデータと等しくなければなりません (つまり、ワークシートの名前は、セル A6、A7、A8、A9 の文字列の文字 x までの文字と同じになります)。
セル B1 で使用でき、その後他のセルにコピーして適切なソース ワークシートとセルを正しく参照できる数式について、ご提案いただければ幸いです。
ご提案ありがとうございます。CHAR 関数を現在のセルの行と列の値とともに使用してソース セルの値を計算する方法は理解できました。残念ながら、クエリをわかりやすくするために、元の投稿では詳細な説明をしなかったため、ご提案では問題が完全に解決されません。実際の宛先シートは次のようになります。実際の目的地シートここで、表示されているセル番号 (AD8、BM8、...、AD9、BM9 など) は、ソース シートから取得する必要がある実際のセルのアドレスです。また、数式を割り当てる必要がある宛先シートには約 70 行あります。さらに提案があれば、ぜひお知らせください。
答え1
間接関数を使用して、セルアドレスを含む文字列を組み立てることができます。
ファイル名がE7
、そのファイル内のシート名がE9
、セル名が にあると仮定するとE11
、次の数式を使用します。
=INDIRECT("'["&E7&"]"&E9&"'!"&E11)
あなたの場合は同じファイル内のシートにアクセスしているので、数式は次のようになります。
=INDIRECT("E9&"!"&E11)
セルA1のシート名は=left(A1,7)です
行 1 のセルはそのシートの列 A からのものであり
、行 2 のセルはそのシートの列 B からのものであり、
列名は char(64+<セルの行番号>) となります。
列 B のセルは行 1 から、
列 C のセルは行 2 からなど、
行番号は <列番号>-1 になります。
これらすべてから次の数式が得られ、それをB1にコピーして右と下に入力します
=INDIRECT(left($a1,7)&"!"&char(row()+64)&column()-1)
26 行を超えると、この処理は実行できなくなります。