• ベストアンサー

エクセル処理に関する質問

添付画像のようにデータの個数が続いているデータを、その数字の個数分だけ行に分解したいです。 マクロを使わずにできるいい方法はないでしょうか。

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

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

>マクロを使わず それなら本件は、諦めるべきと思う。 VBAなら、ごく簡単なコードでできると思う。この課題は、本件限りと割り切って、回答の通りにVBAコードコピペして、実行すべきと思う。 いたずらに複雑になるだけで、他の問題などに応用ができる課題ではない。 回答者も、考えて、テストする、時間を取るだけ。回答者は小間使いではないと言いたい。 ーー やって見たが、作業列を使う方式。これを嫌がる初心者が多いが、本件は課題の性格上、作業列は、避けられないように思うが。 もう少しなら、増しな回答が出るかも、と予想する。 例データ A1:B5 A 5 B 3 C 4 D 2 E 3 ーー C列 C1に1 C2に=C1+B1-1 下方向に式を複写 ーー D列 D1に =VLOOKUP(ROW(),$C$1:$C$6,1) 下方向に式を複写 ーー E列 E1に=A1 E2に =OFFSET($A$1,MATCH(D1,$C$1:$C$6,0)-1,0) 下方向に式を複写 == 結果 A:E列 A 5 1 1 A B 3 5 1 A C 4 8 1 A D 2 12 1 A E 3 14 5 A 17 5 B 5 B 8 B 8 C 8 C 8 C 12 C 12 D 14 D 14 E 14 E 17 E === 参考 VBA  なら標準モジュールで Sub test01() k = 1 For i = 1 To 5 '第5行目までの例として For j = 1 To Cells(i, "B") Cells(k, "c") = Cells(i, "a") k = k + 1 Next j Next i End Sub 極く初心者的なスキルでできる。

その他の回答 (4)

  • SI299792
  • ベストアンサー率47% (774/1618)
回答No.5

セル位置が解りません。画像の様な表とします。 D2: 0 D3: =D2+C3 下へコピペ。(D列はワークエリアです。目障りなら非表示にして下さい。) G3: =INDEX(B:B,MATCH(ROW()-3,D:D,2)+1)&"" 下へコピペ。

  • Chiquilin
  • ベストアンサー率30% (94/306)
回答No.4

バージョンを書かずに質問しても適切な回答は付きません。 というのも Microsoft365なら =TEXTSPLIT(TEXTJOIN(" ",,TRIM(REPT(A2:A4&" ",B2:B4))),," ") で済む話です。 > マクロを使わずにできるいい方法はないでしょうか。 だったらクエリでやればいいでしょう。 カスタム列の追加で「=List.Repeat({[名称]}, [個数])」 作った列を List.Unionで結合 それをテーブルに変換して読み込み おしまい。

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

難解な関数を使えない者のゴリオシ怪答です。(*^_^*) Sheet2!A2: ↓ =IF(ROW(A1)>MAX(個数)*3,"",OFFSET(Sheet1!B$3,(ROW(A1)-1)/MAX(個数),)) これを右隣り(Sheet1!B2)にオートフィル Sheet2!C2: ↓ =IF(OR(B2="",COUNTIF(A$2:A2,A2)>B2),0,TEXT(COUNTIF(A$2:A2,A2),"0")) Sheet2!A2:C2 を下方にズズーッと(17行目まで)オートフィル Sheet2!A:C を選択したまま⇒Ctrl+C⇒Ctrl+Alt+V⇒“値”に目玉入れ ⇒[OK]をパシーッ Sheet2 のC列を選択⇒Ctrl+G⇒[セル選択]⇒“定数”に目玉入れ⇒ “数値”以外に付いているチェック外し⇒[OK]⇒選択状態にある任意の セル上でマウスの右クリック⇒[削除]⇒“行全体”に目玉入れ⇒ [OK]を「エイヤッ!」と叩き付け⇒Sheet2のA列をSheet1のG列に コピー&ペーストでオ・シ・マ・イ(^_^)/~~~

回答No.1

3つだけでしたら、以下数式で対応可能です。 =IF(ROW()<=$B$1,$A$1,IF(ROW()<=$B$1+$B$2,INDIRECT("A"&ROW($A$1)+1),IF(ROW()<=$B$1+$B$2+$B$3,INDIRECT("A"&ROW($A$1)+2),""))) 無数にあるのなら、これを改変させてあげれば可能かもしれませんね。