- ベストアンサー
EXCEL
お世話になります。 EXCELについて教えて下さい。 A列に連続で並んでいるデータを、B列に4行飛びに抽出するにはどうすればよいでしょうか? 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
一例です。 =IF(MOD(ROW(A1),4)=1,OFFSET($A$1,(ROW(A1)-1)/4,0),"")
その他の回答 (2)
- DOUGLAS_
- ベストアンサー率74% (397/534)
>A列に連続で並んでいるデータを、 >B列に4行飛びに抽出する 「4行飛び」の起点はどこでしょうか? 行番号だけを考えてみても、 1)1,6,11,16,21・・・ 2)2,7,12,17,22・・・ 3)3,8,13,18,23・・・ 4)4,9,14,19,24・・・ 5)5,10,15,20,25・・・ と5系列考えられます。 (1)~(5)の数値(セルB1 に入るべきデータのA列での行番号)を導く式は 1)=ROW(A1)*5-4 2)=ROW(A1)*5-3 3)=ROW(A1)*5-2 4)=ROW(A1)*5-1 5)=ROW(A1)*5 ということになります。 これを [INDEX(配列,行番号,列番号)] 関数に代入すると、例えば(1)の系列では、 =INDEX(A:A,ROW(A1)*5-4) ということになります([列番号] は省略)が、これを セルB1 に入れ、セルB2 以下、下方向にコピーします。 (1)~(5)のどの系列かによって =INDEX(A:A,ROW(A1)*5~~) の「~~」に入る式を変えてください。
お礼
DOUGLAS_さん、ありがとうございました。
補足
DOUGLAS_さん、ありがとうございます。 済みません、質問がアバウトすぎました。 具体的に下記のイメージです。 お手数ですが、再度ご教示願います。 A1:あ A2:い A3:う B1:あ B2:空欄 B3:空欄 B4:空欄 B5:い B6:空欄 B7:空欄 B8:空欄 B9:う つまり、A列を4行飛ばすのでなく、A列の全ての内容を、B列では4行飛ばしたいという事です。
- Randomize
- ベストアンサー率70% (38/54)
Offset関数を使用しましょう。この質問内容ですと、B1に =OFFSET($A$1,(ROW()-1)*5,0,1,1) と書き込んで、下へセルをコピーしてあげてください。 ただし、データはA1から書き始められていて、抽出データもB1から下へ続けて書いていくものと仮定しています。 元データの開始されている場所を変えるには$A$1ってところを該当するセルに書き換えてあげてください。(アルファベットと数字の両方の前に「$」が必要です。) 何個飛びを変更するには(ROW()-1)*5ってところの5を好きな数字に変更してください。(私の日本語の解釈が正しければ5で正しいのですが・・・解釈間違えてたらすみません) ちなみにOffset関数は下のようなものです。 =Offset([基準位置],[下方向へずらす数],[右方向へずらす数],[取り出す列の行数],[取り出す列の幅数]) 基準位置から下と右へ指定した数だけ移動して、そこから縦○○×横○○セルの範囲を選択することと同じ意味を持っています。 =OFFSET(A1,3,2,2,2)の場合ですと、A1から下へ3セル右へ2セル移動したところ、すなわちC4がこの関数の場合の左上になります。そこから縦2×横2を選択した範囲、すなわちC4:D5と同じ意味になります。ずらす数には0やマイナスを指定しても大丈夫です。 また、=SUM(OFFSET(===省略===))というように他の関数に組み合わせることも可能です。かなり便利な関数です。
お礼
Randomizeさん、ありがとうございました。
補足
Randomizeさん、ありがとうございます。 済みません、質問がアバウトすぎました。 具体的に下記のイメージです。 お手数ですが、再度ご教示願います。 A1:あ A2:い A3:う B1:あ B2:空欄 B3:空欄 B4:空欄 B5:い B6:空欄 B7:空欄 B8:空欄 B9:う つまり、A列を4行飛ばすのでなく、A列の全ての内容を、B列では4行飛ばしたいという事です。
お礼
mu2011さん、ありがとうございました。
補足
mu2011さん、ありがとうございます。 まさにこれです。完璧です。 こういった並び替えのような事をやる必要が多々あるので、出来れば、この難しい演算の解説をお願い出来ないでしょうか? 宜しくお願い致します。