Excel VBA質問箱 IV

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

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


5001 / 76732 ←次へ | 前へ→

【77345】Re:2個ペアで並べ替えと番号をつけたい
発言  β  - 15/7/24(金) 14:52 -

引用なし
パスワード
   ▼マリモ さん:

提示されたコードのように、各2個のセルの転記を繰り返すと、膨大なコードになりますね。
アップされたコードでは、ペアが空白かどうかのチェックをしていませんので、それも加えると
すざましい長さのコードになりますね。

また、これはマクロ記録の宿命ですけど、Select/Selectionのてんこ盛りになります。

やはり、For/Next や Do/Loop といったループ処理が望ましいですね。
以下も、一例として。

Sub Test()
  Dim x As Long
  Dim i As Long
  Dim j As Long
  
  Dim v As Variant
  ReDim v(1 To Rows.Count - 1, 1 To 3)
  
  With Sheets("Sheet1")
    For i = 2 To .Range("A1").CurrentRegion.Rows.Count
      For j = 1 To Columns("OT").Column Step 2
        If Not IsEmpty(.Cells(i, j)) Or Not IsEmpty(.Cells(i, j + 1)) Then
          x = x + 1
          If x > UBound(v, 1) Then
            MsgBox "データが多すぎてシートに展開しきれません"
            Exit Sub
          End If
          v(x, 1) = i - 1
          v(x, 2) = .Cells(i, j).Value
          v(x, 3) = .Cells(i, j + 1).Value
        End If
      Next
    Next
  End With
  
  With Sheets("Sheet2")
    .Cells.ClearContents
    .Range("A1:C1").Value = Array("番号", "経度", "緯度")
    .Range("A2:C2").Resize(x).Value = v
    .Select
  End With
  
End Sub

243 hits

【77341】2個ペアで並べ替えと番号をつけたい マリモ 15/7/24(金) 10:51 質問[未読]
【77342】Re:2個ペアで並べ替えと番号をつけたい ウッシ 15/7/24(金) 12:28 回答[未読]
【77346】Re:2個ペアで並べ替えと番号をつけたい マリモ 15/7/24(金) 17:20 お礼[未読]
【77343】Re:2個ペアで並べ替えと番号をつけたい kanabun 15/7/24(金) 12:56 発言[未読]
【77344】Re:2個ペアで並べ替えと番号をつけたい kanabun 15/7/24(金) 12:58 発言[未読]
【77347】Re:2個ペアで並べ替えと番号をつけたい マリモ 15/7/24(金) 17:25 お礼[未読]
【77345】Re:2個ペアで並べ替えと番号をつけたい β 15/7/24(金) 14:52 発言[未読]
【77348】Re:2個ペアで並べ替えと番号をつけたい マリモ 15/7/24(金) 17:28 お礼[未読]

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