Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10906 / 13644 ツリー ←次へ | 前へ→

【19234】行空けしながらセルの位置を移動する方法 あい 04/10/26(火) 13:38 質問[未読]
【19235】Re:行空けしながらセルの位置を移動する方法 Asaki 04/10/26(火) 13:53 回答[未読]
【19240】Re:行空けしながらセルの位置を移動する方法 あい 04/10/26(火) 14:10 お礼[未読]
【19241】Re:行空けしながらセルの位置を移動する方法 かみちゃん 04/10/26(火) 14:12 回答[未読]
【19245】Re:行空けしながらセルの位置を移動する方法 Asaki 04/10/26(火) 14:26 回答[未読]
【19251】Re:行空けしながらセルの位置を移動する方法 あい 04/10/26(火) 15:07 お礼[未読]
【19238】Re:行空けしながらセルの位置を移動する方法 Kein 04/10/26(火) 14:06 回答[未読]
【19242】Re:行空けしながらセルの位置を移動する方法 Kein 04/10/26(火) 14:13 回答[未読]
【19244】Re:行空けしながらセルの位置を移動する方法 あい 04/10/26(火) 14:21 お礼[未読]
【19248】Re:行空けしながらセルの位置を移動する方法 Kein 04/10/26(火) 14:41 発言[未読]
【19252】Re:行空けしながらセルの位置を移動する方法 あい 04/10/26(火) 15:11 お礼[未読]
【19239】Re:行空けしながらセルの位置を移動する方法 かみちゃん 04/10/26(火) 14:07 回答[未読]
【19268】Re:行空けしながらセルの位置を移動する方法 あい 04/10/27(水) 8:45 お礼[未読]

【19234】行空けしながらセルの位置を移動する方法
質問  あい  - 04/10/26(火) 13:38 -

引用なし
パスワード
   データ量が多く自動処理したいのですが、なにせ初心者なので助けてください。

A  B  C  D
1  2  3  あ
5  6  7  か   というデータを

A  B  C  D
1  2  3  
     あ
5  6  7
     か      のように並べ替えたいのです。

Sub 行の挿入()
  maxRows = ActiveSheet.UsedRange.Rows.Count
  
  For i = maxRows To 2 Step -1
  Range("A" & i).Select
  Selection.EntireRow.Insert '1行の挿入
  
  Next
End Sub

と1行空けるまではいいのですが移動がうまくできません。
どのようにすればよいのでしょうか?
よろしくおねがいします。

 

【19235】Re:行空けしながらセルの位置を移動する...
回答  Asaki  - 04/10/26(火) 13:53 -

引用なし
パスワード
   こんにちは。

行挿入が終わったところで、
D列をコピーして、C列の先頭の空白セルを右クリック >> 形式を選択して貼り付け で
「空白セルを無視する」でOKする処理を使ってはどうでしょうか?

【19238】Re:行空けしながらセルの位置を移動する...
回答  Kein  - 04/10/26(火) 14:06 -

引用なし
パスワード
   こんなコードで、どうかな ?

Sub MyAlign()
  Dim LR As Long
  Dim C As Range
  Dim St As String
  Dim Ary As Variant
 
  LR = Range("B65536").End(xlUp).Row
  For Each C In Range("C1:D" & LR)
   St = St & C.Value & ","
  Next
  Ary = WorksheetFunction.Transpose(Split(St, ","))
  Application.ScreenUpdating = False
  Range("C1:D" & LR).ClearContents
  Range("C1").Value = 1
  Range("C1:C" & LR).DataSeries xlColumns, , , 2
  With Range("C" & LR + 1)
   .Value = 2
   .Resize(LR).DataSeries xlColumns, , , 2
  End With
  Range("A1").CurrentRegion.Sort Key1:=Range("C1"), _
  Order1:=xlAscending, Header:=xlNo, Orientation:=xlSortColumns
  Range("C:C").ClearContents
  Range("C1").Resize(LR * 2).Value = Ary
  Erase Ary
  Application.ScreenUpdating = True
End Sub

【19239】Re:行空けしながらセルの位置を移動する...
回答  かみちゃん  - 04/10/26(火) 14:07 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>と1行空けるまではいいのですが移動がうまくできません。

こんな感じでいかがでしょうか?
ただし、最終列の文字を1行下の1列左のセルに移動するようにしています。

Option Explicit

Sub 行の挿入()
  Dim maxRows As Long, i As Long, maxColumns As Integer
  
  maxRows = ActiveSheet.UsedRange.Rows.Count
  maxColumns = ActiveSheet.UsedRange.Columns.Count
  For i = maxRows To 1 Step -1
    If i > 1 Then Rows(i).EntireRow.Insert '1行の挿入
    'セルを移動
    With Cells(i * 2 - 1, maxColumns)
     .Offset(1, -1) = .Value
     .ClearContents
    End With
  Next
End Sub

【19240】Re:行空けしながらセルの位置を移動する...
お礼  あい  - 04/10/26(火) 14:10 -

引用なし
パスワード
   ▼Asaki さん:
こんにちは。

さっそくやってみました。
す、すばらしく簡単にできました。
目がらうろこで感激!です。ありがとうございました。

それで、参考までに1行づつ空けながらマクロで位置を移動する方法をもし教えていただけたらありがたいのですが。お願いできませんでしょうか?
(もし、で結構なのですが。初心者のくせに生意気いってすいません。)

【19241】Re:行空けしながらセルの位置を移動する...
回答  かみちゃん  - 04/10/26(火) 14:12 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>それで、参考までに1行づつ空けながらマクロで位置を移動する方法をもし教えていただけたらありがたいのですが。お願いできませんでしょうか?

マクロで位置を移動するとは、
Range("A1").Select
Range("A2").Select
Range("A3").Select
というようなことでしょうか?

【19242】Re:行空けしながらセルの位置を移動する...
回答  Kein  - 04/10/26(火) 14:13 -

引用なし
パスワード
   ちょっとだけ改良。

Sub MyAlign()
  Dim LR As Long
  Dim C As Range
  Dim St As String
  Dim Ary As Variant
 
  LR = Range("B65536").End(xlUp).Row
  For Each C In Range("C1:D" & LR)
   St = St & C.Value & ","
  Next
  Ary = WorksheetFunction.Transpose(Split(St, ","))
  Application.ScreenUpdating = False
  Range("D1").Value = 1
  Range("D1:D" & LR).DataSeries xlColumns, , , 2
  With Range("D" & LR + 1)
   .Value = 2
   .Resize(LR).DataSeries xlColumns, , , 2
  End With
  Range("A1").CurrentRegion.Sort Key1:=Range("D1"), _
  Order1:=xlAscending, Header:=xlNo, Orientation:=xlSortColumns
  Range("D:D").ClearContents
  Range("C1").Resize(LR * 2).Value = Ary
  Erase Ary
  Application.ScreenUpdating = True
End Sub

【19244】Re:行空けしながらセルの位置を移動する...
お礼  あい  - 04/10/26(火) 14:21 -

引用なし
パスワード
   お答えくださぅってどうもありがとうございます。

やってみたのですが、
コンパイルエラーでSubmaまたはFunctionが定義されたいません。
となってしまうんです。
ちなみにMac版なのですが、
何か私の使用方法に問題があるのかもしれません。

【19245】Re:行空けしながらセルの位置を移動する...
回答  Asaki  - 04/10/26(火) 14:26 -

引用なし
パスワード
   忘れていましたが、私が提示した処理は、マクロの記録などでコード化して、
それを最後に追加しては?という意味でした。

>それで、参考までに1行づつ空けながらマクロで位置を移動する方法を
>もし教えていただけたらありがたいのですが。お願いできませんでしょうか?
良く分かりませんが、以下の手作業を記録して修正すると、それなりになるのでは?

1) E列に、データ最終行まで1から順に連番を設定
2) 1で作成した連番を全てコピーして、E列最終行の次の行に貼り付け
3) D列のデータコピーまたは切り取って、C列最終行の次の行に貼り付け
4) A列からE列の最終データまでを範囲選択して、E列を第1キーにして並べ替え
5) E列(D列)クリア

【19248】Re:行空けしながらセルの位置を移動する...
発言  Kein  - 04/10/26(火) 14:41 -

引用なし
パスワード
   あー・・Macのエクセルだと、持ってないので分かりません。
他の回答でやって下さい。

【19251】Re:行空けしながらセルの位置を移動する...
お礼  あい  - 04/10/26(火) 15:07 -

引用なし
パスワード
   何度も有り難うございます。

なにせ勉強不足ですぐにはわかりませんが
少しずつやってみようと思います。
とても良いヒントになりました。

また、お世話になるかも知れませんがその時はよろしくお願いします。

【19252】Re:行空けしながらセルの位置を移動する...
お礼  あい  - 04/10/26(火) 15:11 -

引用なし
パスワード
   ▼Kein さん

一部変更すれば使えそうなのでもっと勉強します。

これからの勉強にとても役にたちそうです。
ありがとうございました。

【19268】Re:行空けしながらセルの位置を移動する...
お礼  あい  - 04/10/27(水) 8:45 -

引用なし
パスワード
   どうもありがとうございます。
お礼がお遅くなってすみません。

教えていただいたものを試してみました。
2行目まではうまくいったのですが、
何故か3行目からは行空けしかできませんでした。
2行目以降も連続して処理できればうれしいんですが…。
自分でも努力してみますが、
またお暇な時にでも教えていただければと思います。

10906 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free