-3
Sub Concat()

   Do While ActiveCell <> "" 

      'The rows are filtered to display only "London"
      'The changes required are for "London" only

      If ActiveCell.Offset(0,0) = "London" Then
        ActiveCell.Offset(0, 0).FormulaR1C1 = _
           ActiveCell.Offset(0, 0) & " " & ActiveCell.Offset(0, 1)

        ActiveCell.Offset(0, 1) = ""
      End If
      ActiveCell.Offset(1, 0).Select
   Loop

End Sub

13500行近くあります。これは機能しません。目立った変更は見当たりません。

4

2 に答える 2

1
Sub Concat()

   Do While ActiveCell <> "" 

      With ActiveCell
         If .Value = "London" Then
             .Value = .Value & .Offset(0, 1).Value
             .Offset(0, 1).Value = ""
         End If
      End With

      ActiveCell.Offset(1, 0).Select

    Loop

End Sub
于 2013-02-15T06:34:33.273 に答える
0

ステートメントを使用してループをfor each記述し、ワークシートのUsedRange内のすべての行をループすることができます。各行について、行の最初の列の値が「ロンドン」であるかどうかを確認し、そうである場合は、列の内容をcolumn1とcolumn2の組み合わせで上書きします。

次に、column3からcolumn2に値をコピーし、次を使用してcolumn3の値をクリアしますClearContents

Sub Concat()

    'Loop through all the rows
    For Each Row In ActiveSheet.UsedRange.Rows

    'Look at the cell in the first column of the current row
    'If value is "London" concatinate column 1 and 2 and store in column1
    'Note, the check for "London" is an exact, case sensative check!

        If Row.Columns(1) = "London" Then
            Row.Columns(1) = Row.Columns(1) & " " & Row.Columns(2)
            Row.Columns(2) = Row.Columns(3)
            Row.Columns(3).ClearContents
        End If
    Next Row
End Sub
于 2013-02-15T08:27:43.667 に答える