• ベストアンサー

エクセルのA1~A2000までを3列、48行のページを複数つくりたい

エクセルのA1~A2000まで、カタカナの単語が入っています。 1ページに3列、48行の表を、約40枚作りたいのです。 1ページ左の列には、A1からA48の単語を上から下に、 真ん中の列には、A49~A96まで、 右列は、A97~A144まで、入れたいのです。 同様に、 2ページ左の列には、A145からA192の単語を上から下に、 真ん中の列には、A193~A240まで、 右列は、A241~A288まで、入れたいのです。 このようにして、A1~A2000をまとめたい。 (ページの区分:プリントは分かります) マクロを使わず、並び替えができる方法を教えてください。よろしくお願いします。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

カタカナ単語はSheet1のA1~A2000にあるとします。 Sheet2を用意して、Sheet2のA1に   =INDEX(Sheet1!$A$1:$A$2000,INT((ROW()-1)/48)*144+MOD(ROW()-1,48)+1+(COLUMN()-1)*48) 後は、3列、必要な行数、コピーします。

abouka
質問者

お礼

nishi6 様 早速のご回答ありがとうございました。 投稿前3時間、既存の質問を調べましたが、この質問の逆の場合がありましたが、それを見てもチンプンカンプンで困り果て、投稿させてもらいました。投稿後、1時間は起きておりましたが、体力がなく、寝込んでしまい、お礼の返事が遅くなり失礼しました。勉強不足で1年経っても進歩の度合いは『のろのろ』です。 ご指示の式で欲しいものが手に入りました。 関数の意味をよく理解しておきます。 ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

#1のnishi6先生の深夜のご解答と類似かもしれませんが Offset関数を使った回答をあげます。 Index関数とOffset関数は類似の応用が出来る場合があります。 (式の発見) Sheet2の行番号、列番号(<=3)から、Sheet1の行番号を割り出す式の発見。 1 49 97 48 96 144 ---- 145 193 241 192 240 288 --- 289 337 385 336 384 432 --- 433 481 529 480 528 576 --- の表を作り、じっとにらめっこして式を考え 「まず第一ステップとして」Sheet2のセルに上記の数字 を出すような式を考えます。 周期的に繰り返しがあるときは、割り算とINT関数が 有効のことが多いです。 =ROW(A1)+((COLUMN(A1)-1)*48)+INT((ROW(A1)-1)/48)*(3-1)*48 を割り出しました。 関数式内のしかるべき場所に、上手に-1を入れて調節するのがコツです。 これをA1に入れ、A1の式をB1:B3に複写します。 次にA1:C1を範囲指定し、C3の場所で+ハンドルをだし、下方向へ引っ張ります。 それで上記表のような数字が、Sheet2の正しいセルの位置に入ったことを確認します。 次に原本であるSheet1のA列よりデータを採ってくることを考えて、手直しします。 それには、Offset関数を使います。 Offset関数では、Sheet1の$A$1を起点として、隔たり行数・列数を指定します。次分自身のセル場合は行隔たり0,列隔たり0であるので、-1します。それと異シートSheet1から持ってくるので、「Sheet1!」を付けます。 結果Sheet2のA1セルに入れる式は =OFFSET(Sheet1!$A$1,ROW(A1)+((COLUMN(A1)-1)*48)+INT((ROW(A1)-1)/48)*(3-1)*48-1,0) です。 A1をB1,C1に複写。 A1:C1を下方向へ、A2000が現れるまで複写する。 結局数学の級数を考える要領です。式の発見が手間取るだけです。本質問は多列に変換パターンの中でもやや難しい部類でしょう。

abouka
質問者

お礼

imogasi 様 ご回答ありがとうございました。 丁寧な手引きを書いてもらい助かりました。いくつも答えに至る方法があることは楽しくもありすばらしいエクセルですね。お答えの作業どおりで、確認できました。 ありがとうございました。

関連するQ&A