• ベストアンサー

エクセルで等間隔のセルの抽出

例えば、A1~A100にデータが入力されている状態で、A1,A11,A21というように等間隔のデータだけを列Bに空白のセルを作らず連続して抽出したいのですが、どうしたらよいでしょうか。 即ち、A1 → B1,A11 → B2、A21 → B3、・・・・ エクセル不慣れなもので、よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。 ■数式で抽出  B1に=INDEX(A:A,(ROW(A1)-1)*10+1)を入力、下方向にコピー ■数式以外で抽出  B1に#A1、B2に#A11を入力、A1:A2を選択して下方向にコピー、編集→置換で「#」を「=」に一括置換

bunbun1234
質問者

お礼

早速のご回答ありがとうございます。 助かりました。!! 数式以外の抽出方法で簡単にできました。 数式の抽出方法は、まだ理解不十分ですが、今後のために時間に余裕の あるときに勉強します。 取り急ぎお礼まで。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

回答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すなわち空の場合には空にして、そうでない場合にはそのセルの値を表示しなさいとの意味になります。

bunbun1234
質問者

お礼

非常にご丁寧な解説をいただき誠にありがとうございました。 良く分かりました。(^o^)/ とてもとても自力では、理解不能でしたので助かりました。 これからも何かあったら質問させてください。

すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! すでに解決しているみたいなので余計なお世話かもしれませんが・・・ B1セルに =OFFSET($A$1,(ROW(A1)-1)*10,,1) としてオートフィルで下へコピーの方法もあります。 失礼しました。m(__)m

bunbun1234
質問者

お礼

ご回答ありがとうございます。 これは、理解できました!! 色々な方法が、あるのですね。 大変参考になりました。 本当にありがとうございます。

すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

例えばC1セルに等間隔となる10を入力してからB1セルに次の式を入力して下方にオートフィルドラッグします。 =IF(COUNTIF(A:A,ROW(A1)*C$1-(C$1-1))=0,"",INDEX(A:A,ROW(A1)*C$1-(C$1-1)))

bunbun1234
質問者

お礼

早速のご回答ありがとうございます。 関数を知っているといろいろとできるのですね。 ロジックが理解できないのが、悲しいですが・・・ 時間があるときで結構ですので、簡単にロジックを教えて頂けると幸いです。 自分でも調べ、考えましたが、いまひとつ理解できません。 よろしくお願い致します。

すると、全ての回答が全文表示されます。

関連するQ&A