回答No2です。お尋ねの件ですがお示しした式は次のようですね。
=IF(COUNTIF(A:A,ROW(A1)*C$1-(C$1-1))=0,"",INDEX(A:A,ROW(A1)*C$1-(C$1-1)))
この式をよく見たら誤っていました。次の式が正しいですね。訂正をお願いします。
=IF(INDEX(A:A,ROW(A1)*C$1-(C$1-1))=0,"",INDEX(A:A,ROW(A1)*C$1-(C$1-1)))
この式をB1セルに入力してそれを下方にオートフィルドラッグすればB2セルでは次のような式になりますね。
=IF(INDEX(A:A,ROW(A2)*C$1-(C$1-1))=0,"",INDEX(A:A,ROW(A2)*C$1-(C$1-1)))
このように下方の行になればROW()の値のみが変化することになりますね。つまりROW(A1)=1からROW(A2)=2に変わっています。
なお、C1の行番号に$のマークを付けることで絶対参照の形となって行番号は下方にオートフィルドラッグしても変わりません。
B1セルではROW(A1)*C$1-(C$1-1)の値はC$1のセルの値が10の場合には1*10-(10-1)で1になりますね。また、B2セルでは2*10-(10-1)で11になります。同様にB3セルでは21、B4セルでは31というように変化します。
INDEX(A:A,ROW(A1)*C$1-(C$1-1))の式は関数の中で指定された行と列が交差する位置にあるセルの値を取り出すための式で、通常はINDEX(範囲,行番号,列番号)の形で使われます。ここでは範囲としてA:Aを使っていますのでA列のみを範囲としています。その場合には列番号を関数の引数として使う必要がありません。行番号だけでよいのです。
したがってINDEX(A:A,ROW(A1)*C$1-(C$1-1))の意味はA列で1行目のセルの値を取り出すことになります。B2セルではA列で11行目のセルの値を取り出すことになります。
=IF(INDEX(A:A,ROW(A1)*C$1-(C$1-1))=0,"",INDEX(A:A,ROW(A1)*C$1-(C$1-1)))
の式ではINDEX関数で取り出したセルの値が0すなわち空の場合には空にして、そうでない場合にはそのセルの値を表示しなさいとの意味になります。
お礼
早速のご回答ありがとうございます。 助かりました。!! 数式以外の抽出方法で簡単にできました。 数式の抽出方法は、まだ理解不十分ですが、今後のために時間に余裕の あるときに勉強します。 取り急ぎお礼まで。