私は次の2つのVBAコードをExcelで行っています。主な目的は、複数のアドレス行を1行にまとめることです。問題は永遠に実行することです。とにかく私はそれを最適化することができますか?VBAコードの最適化 - 常駐住所の組み合わせ
データはそのままですが、顧客の住所ごとにケース#があります。得意先住所は複数の行に分割することができます。例:「アドレス行1-ブロック56」、「住所行2-パリーアベニュー」、「住所行3-郵便番号」。新しいアドレスの間に空白があります。
私の目的は、アドレスを1行にまとめ、ケース番号の間の空の行を削除することです(例: "Block 56 Parry Avenue Postal code")。約26Kのケース番号があります。
Sub test()
Dim l As Long
Dim lEnd As Long
Dim wks As Worksheet
Dim temp As String
Application.EnableEvents = False
Application.ScreenUpdating = False
Set wks = Sheets("data")
wks.Activate
lEnd = ActiveSheet.UsedRange.Rows.Count
For l = 3 To lEnd
If Not IsEmpty(Cells(l, 1)) Then
Do Until IsEmpty(Cells(l + 1, 4))
temp = Cells(l, 4).Value & " " & Cells(l + 1, 4).Value
Cells(l, 4).Value = temp
Cells(l + 1, 4).EntireRow.Delete
Loop
Else: Cells(l, 1).EntireRow.Delete
Do Until IsEmpty(Cells(l + 1, 4))
temp = Cells(l, 4).Value & " " & Cells(l + 1, 4).Value
Cells(l, 4).Value = temp
Cells(l + 1, 4).EntireRow.Delete
Loop
End If
Next l
End Sub
はと第二のコードでは、私は
Sub transformdata()
'
Dim temp As String
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Range("A3").Select
Do Until IsEmpty(ActiveCell) And IsEmpty(ActiveCell.Offset(1, 0))
Do Until IsEmpty(ActiveCell.Offset(1, 3))
temp = ActiveCell.Offset(, 3).Value & " " & ActiveCell.Offset(1, 3).Value
ActiveCell.Offset(, 3).Value = temp
ActiveCell.Offset(1, 3).EntireRow.Delete
Loop
ActiveCell.Offset(1, 0).EntireRow.Delete
ActiveCell.Offset(1, 0).Select
Loop
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
あなたは私達にあなたのワークシートとあなたのサンプルデータの画像(複数可)を共有することはできますか?あなたのリクエストを理解するのに役立ちます –
いくつの列がありますか? 4列しかありませんか? –