我在A列中有一个名字,在B列中有一个名字,我需要将它们组合到A列中。也不确定是否需要在代码中进行检查,但是现在有些单元格为空名称。我尝试了很多事情,但他们都希望我将两者拉开,然后将它们输入到其他列或第三列。但是我需要将它们放入A列。
这是我拥有的代码,它不断给我合并错误。
With Worksheet
For Counter = LastRow To FirstRow Step -1
Range("BD2:BE1000").Merge Across:=True
Next Counter
End With
答案 0 :(得分:0)
您仅可以在此处使用字符串连接(假设示例代码中已正确设置了lastrow(1000)和firstrow(2))。
With Worksheet
For Counter = LastRow To FirstRow Step -1
.Range("BD" & counter).Value = .Range("BD" & counter).value & .Range("BE" & counter).value
Next Counter
End With
答案 1 :(得分:0)
将(非空)名称连接到一列
[1]
第一步,您可以通过一个线性将您的数据范围(对象变量,例如rng
)分配给基于1变量的2维数据字段数组v = rng
或v = rng.Value2
。[2]
在第二步中,循环遍历所有数组行,并在数组的第一列中检查连接这些发现的非空名称(覆盖原始的单名称部分)。 [3]
将接收范围仅调整为1列(非空行数使您可以将结果写回到工作表中。)代码示例
Option Explicit ' declaration head of your code module enforces declaration of variables/objects
Sub ConcatenateNames()
Dim v As Variant, rng As Range
With ThisWorkbook.Worksheets("MySheet") ' <<~~ change to your sheet name
' [1] assign names to 2-dim datafield array v
Set rng = .Range("BD2:BE1000") ' set user defined range to memory
v = rng.Value2 ' get data
' [2] loop through data
Dim i As Long, ii As Long
For i = 1 To UBound(v)
' [2a] check for non empty names
If Len(Trim(v(i, 1)) & Trim(v(i, 2))) > 0 Then
' [2b] concatenate first and last names in array v
ii = ii + 1 ' increment counter
v(ii, 1) = v(i, 1) & " " & v(i, 2)
End If
Next i
' [3] write back to sheet and resize receiving range to ii rows and 1 column
rng.Clear ' clear original data
rng.Resize(ii, 1) = v ' write names back to sheet
End With
End Sub
其他提示
请注意指向您的工作表对象的“范围” 之前的关键点 .
:Set rng = .Range("BD2:BE1000")