- ベストアンサー
エクセルでA列をB列の数だけ縦に並べたデータ
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
D1やD2セルでもよいのですが、先の式よりも次の式を入力して下方にオートフィルドラッグコピーすればよいですね。 =IF(ROW(A1)>MAX(C:C),"",INDEX(A:A,IF(ROW(A1)<=B$2,2,IF(COUNTIF(C:C,ROW(A1)),MATCH(ROW(A1),C:C,0),MATCH(ROW(A1),C:C,1)+1))))
その他の回答 (4)
- keithin
- ベストアンサー率66% (5278/7941)
まぁどうやってもある程度複雑な式にはなってしまいますね。 D2に =IF(ROW(D1)>SUM(B:B),"",INDEX(A:A,MATCH(ROW(D1),SUBTOTAL(9,INDIRECT("B1:B"&ROW($B$1:$B$25)))+1,1)+1)) と記入し,必ずコントロールキーとシフトキーを押しながらEnterで入力,下向けにコピーして埋めておきます。 #別の方法 C2に =IF(B2="","",SUM($B$1:B1,1)) 以下コピーして備えておき D2に =IF(ROW(D1)>SUM(B:B),"",LOOKUP(ROW(D1),C:C,A:A)) と記入して下向けにコピーします。
お礼
長い時間かかっていた作業がほんの数秒になって驚いています。 正直何が書いてあるのか自分には理解できないのにコピーするだけで使わせていただけるのが申し訳ないです。 回答ありがとうございました。
- MackyNo1
- ベストアンサー率53% (1521/2850)
D2セルに「=A2」と入力しておき、D3セルに以下の数式を入力し下方向にオートフィルコピーしてください。 =IF(ROWS($D$2:D2)>SUM($B$2:$B$100)-1,"",IF(COUNTIF($D$2:D2,D2)>INDEX($B$2:$B$100,MATCH(D2,$A$2:$A$100,0))-1,INDEX($A$2:$A$100,MATCH(D2,$A$2:$A$100,0)+1),D2))
お礼
回答ありがとうございます。 関数はオートSUMぐらいしかつかわないので、こんなことが出来ると知れて勉強になりました。
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! VBAになってしまいますが・・・ 一例です。 画像のようにデータは2行目以降にあるとします。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面がでますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i As Long Application.ScreenUpdating = False For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If Cells(i, 2) <> 1 Then Rows(i + 1 & ":" & i + Cells(i, 2) - 1).Insert End If Next i For i = 2 To WorksheetFunction.Sum(Columns(2)) + 1 If Cells(i, 1) = "" Then Cells(i, 1) = Cells(i - 1, 1) End If Next i Application.ScreenUpdating = True End Sub 'この行まで ※ 一旦マクロを実行すると、元に戻せませんので、別Sheetでマクロを試してみてください。 ご希望の方法でなかったらごめんなさいね。m(__)m
お礼
せっかく考えていただいたのに、自分の勉強不足でVBAやマクロが何のことか分からずもっとエクセルを勉強しようと思いました。回答ありがとうございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
計算に負担を掛けない方法として作業列を作って対応することにします。 C2セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(A2="","",SUM(B$2:B2)) D1セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(ROW(A1)>MAX(C:C),"",INDEX(A$2:A$1000,IF(ROW(A1)<=B$2,1,IF(COUNTIF(C:C,ROW(A1)),MATCH(ROW(A1),C$2:C$1000,0),MATCH(ROW(A1),C$2:C$1000,1)+1)))) 作業列が目障りでしたら作業列を選んで右クリックし非表示を選択します。
お礼
仕事の作業が楽にならないかと軽い気持ちで質問したものに二つも回答を返していただきありがとうございました。