
私が作成を手伝っているタイムシートがあり、シート 1 からデータを取得してシート 2 のリストに追加します。データはシート 1 の A42、次に A73、A115、A146、A188 などを参照する必要があり、間隔パターンは 42、次に 31、次に 42、次に 31 で、これが 100 回繰り返されます。この方法でデータを参照するにはどうすればよいでしょうか。
答え1
参照する必要のある Sheet1 のセルには一定のパターンがあるように見えるため、Sheet2 の行番号に基づいて正しい Sheet1 の行番号を生成する数式を作成するだけです。関数 、 、 のいずれかを使用して参照数式を生成するのROW()
は比較的ISEVEN()
簡単です。ISODD()
MOD()
FLOOR()
シート1の行番号 =31*FLOOR((ROW())/2;1)+42*FLOOR((ROW()+1)/2;1)
行番号からINDEX()
関数を使用した実際の数式まで:
=INDEX(Sheet1!A:A;30*FLOOR(ROW()/2;1)+41*FLOOR((ROW()-1)/2;1)+42;1)
(数式では、最初のパラメータの範囲をソース データに合わせて変更し、範囲内の列番号を示す最後のパラメータの数値を変更する必要があります)。
Sheet2 の行番号は Sheet1 の正しい行を取得する主な要因であるため、上記は Sheet1 のソース データが行 42 から始まり、Sheet2 の結果データが行 1 から始まる場合にのみ機能します。これが変更された場合は、もちろん、各呼び出しの数式で行オフセットを減算したりROW()
(Sheet2 のオフセットの場合)、結果の行番号を加算/減算したり (Sheet1 のオフセット変更の場合) することができます。
答え2
数式を使用してこれを行う方法の例を次に示します。
数式の核となる部分が生成するパターンを説明するために、列 A を使用しています。行 1 には見出しが含まれる可能性が高いため、これは行 2 から始まります。これは、シート 1 から選択された項目のリストを作成するシート 2 にあります。A2 のターゲット行番号を計算する数式は次のとおりです。
=INT(ROW()/2)*42+INT((ROW()-1)/2)*31
次のスクリーンショットは、これを使用して実際に他のシートからセルを取得する方法を示しています。
セル A42 にのみコピーする内容を貼り付けたため、列 B のセルが 1 つだけ入力されています。数式では、INDIRECT 関数を使用してセル参照を構築します。B2 の数式は次のとおりです。
=INDIRECT("sheet1!A" & INT(ROW()/2)*42+INT((ROW()-1)/2)*31)
シート 1 のセル A42 には が含まれていますABC
。