• ベストアンサー

横並びのデータを縦1列に並びかえる

横に月、縦に時間項目の表があります。 元データを残した状態で横に並んでいるデータを縦に並べる方法を教えてください。 1月のデータの下に2月データを並べる 2月の下に3月をもってくる。 上記の繰り返し ただし、表の上段には表タイトルと項目があります。 サンプルデータを添付します。

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

  • ベストアンサー
  • msMike
  • ベストアンサー率20% (364/1804)
回答No.2

一切講釈なし。 C16: =OFFSET(C$4,MOD(ROW(A1)-1,10),(ROW(A1)-1)/10) 珍紛漢なら、あるいは、興味なければ、無視されたい。 興味あるなら、理解できない部分のみ質問されたい。

noname#248032
質問者

お礼

ありがとうございました。 実践したらOKでした。

その他の回答 (3)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.4

C16セルへ次の数式を入力して下へC75セルまでコピーすれば目的通りの配列になります。 =INDEX($C$4:$H$13,MOD(ROWS(C$16:C16)-1,10)+1,INT((ROWS(C$16:C16)-1)/10)+1) 実際のデータに合わせて数式を修正して実用の数表に適用すれば良いでしょう。

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.3

お邪魔します。 魚を、渡さず 釣り方を、教える 方式で、今回は。 お求めなのは 参照先を 上から、順に 10行、読み込んだら 列を、左に ずらす、 ですよね? ROW() と、言う 関数が、ありまして 此は、 自身の、セルの 行番号が、判ります。 例えば 縦並べ、開始位置を C16と、すると ROW()-ROW(C:16)+1 と、すると、 幾つ目の、セルデーターを 見たいか が、判ります。 其処で、では 仮の、話し セル C:36は どのセルを、参照すれば 良いか、 と、言うと、 ROW()-ROW(C:16)+1→36-16+1=21 なので 3列目先頭。 同様に セル C:52なら ROW()-ROW(C:16)+1→52-16+1=37 なので 4列目、7番目 ですね。 では どう計算すれば、良いか ですが、 まずは、列から 先の、式 ROW()-ROW(C:16)+1 此の、結果から、 十の位、以上を 取り出して、 更に 1足せば 何列目かは、出ます。 =INT((ROW()-ROW(C:16)+1)-10) 此で 構わないで、しょう。 次に、幾つ目(何行目)か ですが、 表が、10行ずつ なので、 第1位の、値を 出し 1を、足せば 済みますよね、 計算は =MOD(ROW()-ROW(C:16)+1,10)+1 此で、行けますね。 以上を 参照機能の、ある 関数 OFFSET、INDEX、INDIRECT(ADRESS( , , ))、 其の他に、 組み込むだけですね。 如何ですか? お役に、立てていたなら 幸いです。

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

方法としては (1)手作業で人間の認知を頼りにコピー貼り付け (2)関数 (3)VBA (4)(3)の一方法として「マクロの記録」を使う 毎回行数やその他を変えるセルがあり得るのか(行数程度などはVBAで察知 できるが。 画像だけ張り付けて、そういうことを質問に注記できないようでは、質問者は現状VBAなどできないだろうな。その辺を、質問にことわっておくべきなんだ。 VBAが出来るなら、繰り返し処理に、持ち込んで初等的な問題になる。 データのシート上の体裁(配置)を変えるのは、VBAの問題になる。 ーー データ部分の多列状態を、関数で!、1列化する方法は、WEB照会で載っているだろう。 ここに質問する前に、Googleで「エクセル 多列データを1列化」で照会すれば、やり方の解説が出てくる。 それさえもやらずに質問するのは、質問者にとっても、時間の無駄。 関数でやるなら https://oshiete.goo.ne.jp/qa/5070724.html などを参考に、自分の場合のデータ表(行・列)にあわせて、式を作ってみて試行錯誤してください。 =IF(ROW(A1)>10*5,"",INDEX($A$1:$E$10,IF(MOD(ROW(A1),10)=0,10,MOD(ROW(A1),10)),ROUNDUP(ROW(A1)/10,0))) の固定数字(例10)がどこと関連しているの考えて修正すれば、うまく行くだろう。

関連するQ&A