- ベストアンサー
EXCEL VBAで複数セルの移動方法とは?
- 大項目と中項目が入ったリストがあり、中項目を大項目の下に移動したい。しかし、中項目は歯抜けで連続していないため、マクロを使用する必要がある。どのような方法があるか、ヒントを教えてほしい。
- 50万行もある大項目と中項目のリストがあり、中項目を大項目の下にずらしたい。しかし、中項目は歯抜けで連続していないため、マクロを使用する必要がある。どのような方法があるか、アドバイスをお願いします。
- EXCELのVBAを使って、大項目と中項目のリストを扱っています。中項目を大項目の下に移動したいのですが、中項目は歯抜けで連続していないため、マクロを使用する必要があります。どのようにすれば効率的に移動できるでしょうか。アイデアを教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! すでに回答は出ていますので、参考程度で・・・ ↓の画像のような感じになればよいのですよね? データは2行目からあるとします。 Sub test() Dim i As Long For i = Cells(Rows.Count, 2).End(xlUp).Row To 2 Step -1 If Cells(i, 1) <> "" And Cells(i, 2) <> "" Then Rows(i).Insert End If Next i Cells(2, 1).Delete (xlUp) End Sub こんな感じではどうでしょうか? >50万行もあり・・・ とありますので、結構時間がかかるかもしれません。 参考になれば良いのですが・・・m(_ _)m
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17070)
文章だけでは質問のデータ情況と、したいことがよくわからない。 既に回答が出ていると考えずに、例データを10行ぐらい例示してみて、説明し、質問するものだ。 大項目2-3、中項目各々2-3の例でわかるだろう。 現状のシートデータと修正後のシートのデータの有様を。 各大項目の行数と、また各中項目の行数が一定でないだろうから、表の行数が組み換えなので、関数では難しく、VBAを使わざるを得ない、ように見える。 別シートに目的の物を作ることになると思うが、VBAコードの作り方の前に、日本語では、どうすれば組み替えられるのか表現し考えることも必要だ。 ーー >中項目は次の大項目まで連続しているわけではなく、歯抜けのものが結構あります。 ただ大項目(A列とする)の行範囲は守りながら、B列に中項目が上から列挙されているだけか。 中項目の方が多い場合は無いのか? 歯抜けとは、中項目が存在しない大項目があるということ?
お礼
基本的なご指摘ありがとうございます。 本件解決しましたが、 >ただ大項目(A列とする)の行範囲は守りながら、B列に中項目が上から列挙されているだけか。 中項目が列挙されているだけです。 >中項目の方が多い場合は無いのか? >歯抜けとは、中項目が存在しない大項目があるということ? すべての大項目には中項目が存在しますが、中項目がところどころ抜けているということでした。 質問が、わかりにくく申し訳ありません。 御礼遅れてすみません。
- mu2011
- ベストアンサー率38% (1910/4994)
NO1です。 表の見出し行を考慮していませんでしたので、大項目の開始行を調整して下さい。 (2行目からの場合) For i = Cells(Rows.Count, 2).End(xlUp).Row To 1 Step -1 ↓ For i = Cells(Rows.Count, 2).End(xlUp).Row To 2 Step -1
お礼
ご回答ありがとうございます。 御礼遅れて申し訳ありません。 本件解決しました。
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 B列を基準に対応A列が空白以外ならば大項目・中項目行なので行を挿入、大項目を移動しています。 対象シートタブ上で右クリック→コードの表示→以下のコードを貼り付け→F5キー押下 因みに元シートで直接せずに、コピーシートでお試しください。 Sub sample() For i = Cells(Rows.Count, 2).End(xlUp).Row To 1 Step -1 If Cells(i, 1) <> "" Then Rows(i).Insert Cells(i + 1, 1).Cut Cells(i, 1) End If Next End Sub
お礼
ありがとうございました。 希望どうりのファイルができました。 素晴らしい!!