您能否帮助使用 Excel 2010 宏连接单元格。我有 A 到 E 列。我想在 F 列中连接 D 和 C 列。请注意,我不知道 D 和 C 列中的确切行数,但是当没有值时宏应该停止连接列说。样本:
A B C D E F
0 Exist Echalas Gerald 25256 Gerald Echalas
……
谢谢你。
您能否帮助使用 Excel 2010 宏连接单元格。我有 A 到 E 列。我想在 F 列中连接 D 和 C 列。请注意,我不知道 D 和 C 列中的确切行数,但是当没有值时宏应该停止连接列说。样本:
A B C D E F
0 Exist Echalas Gerald 25256 Gerald Echalas
……
谢谢你。
像这样的东西(未经测试)
dim row as integer
row = 1
while(cells(row, 3) <> "" and cells(row, 4) <> ""
cells(row, 5) = cells(row, 3) & " " & and cells(row, 4)
row = row + 1
wend
这会将 C、D 到 F 列的值组合为“D、C”,而与最后使用的行之间的间隙无关。
Sub CombineCols()
Dim oWS As Worksheet, lLastRow As Long, r As Long
Set oWS = ActiveSheet
lLastRow = oWS.Cells.SpecialCells(xlLastCell).Row
For r = 1 To lLastRow
' Combine if both C and D are not empty
If Len(oWS.Cells(r, 3)) > 0 And Len(oWS.Cells(r, 4)) > 0 Then
oWS.Cells(r, 6).Value = oWS.Cells(r, 4).Value & " " & oWS.Cells(r, 3).Value
End If
Next
End Sub
您可以更改检查条件,使其不需要将有效文本列 C 和 D 组合起来。
提示:您可以引用具有长编号的单元格的列 - 从 A=1 开始。
试试这个,来自 MSDN,它有一个遍历每一行的例子。
http://support.microsoft.com/kb/213477
他们的样本:
Sub ConcatColumns()
Do While ActiveCell <> "" 'Loops until the active cell is blank.
'The "&" must have a space on both sides or it will be
'treated as a variable type of long integer.
ActiveCell.Offset(0, 1).FormulaR1C1 = _
ActiveCell.Offset(0, -1) & " " & ActiveCell.Offset(0, 0)
ActiveCell.Offset(1, 0).Select
Loop
End Sub
让我们在 sheet1 中说你
Sub test()
Dim r As Range
Dim lr As Integer
With Sheets("Sheet1")
lr = .Range("C500000").End(xlUp).Row
For Each r In .Range("F2:F" & lr)
r.Value = r.Offset(0, -2).Value & " " & r.Offset(0, -3).Value
Next r
End With
End Sub
经过测试
连接函数很容易在宏中实现。您所要做的就是在要连接的对象之间放置一个“&”。在你的情况下是这样的:
Range("F1").Value = Range("C1").Value & " " & Range("D1")
*请注意,我在 C1 和 D1 值之间添加了一个空格
接下来,您将需要一个循环来遍历您的数据。有几种很好的方法可以控制循环何时停止。
方法#1
最简单的方法是不用担心宏何时停止。这可能适用于您的情况,将任何内容与任何内容连接起来都不会产生任何结果。
loop
Range("F1").Value = Range("C1").Value & " " & Range("D1")
next
方法#2
当指定列的数据用完时结束循环。在您的情况下,这可能如下所示:
While(Range("A" & i).value <> "")
Range("F1").Value = Range("C1").Value & " " & Range("D1")
i = i + 1
Wend
方法#3
Excel 有一个函数 (.count),它将返回一列中的条目数(如果有间隙,将无法正常工作)。当没有更多数据时,使用返回值和 for 循环来停止循环。
似乎是一个公式的好工作
Sub ConcatName()
With ActiveSheet
.Range("F1").Resize(.Range("A1").CurrentRegion.Rows.Count, 1).FormulaR1C1 = "=RC[-2]&"" ""&RC[-3]"
End With
End Sub
CurrentRegion 属性获取 A1 周围的数据块,将 F1 扩展为行数,然后插入一个连接的公式。