请帮助您使用Excel 2010宏连接单元格。我有A列到E列。我想在F列中连接D和C列。请注意我不知道D列和C列中的确切行数,但是当宏中没有值时,宏应该停止连接专栏说。样品:
A B C D E F
0 Exist Echalas Gerald 25256 Gerald Echalas
...
谢谢。
答案 0 :(得分: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
答案 1 :(得分:0)
像这样(未经测试)
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
答案 2 :(得分:0)
让我们说一下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
测试
答案 3 :(得分:0)
似乎对公式来说是一份好工作
Sub ConcatName()
With ActiveSheet
.Range("F1").Resize(.Range("A1").CurrentRegion.Rows.Count, 1).FormulaR1C1 = "=RC[-2]&"" ""&RC[-3]"
End With
End Sub
CurrentRegion属性获取A1周围的数据blob,按行数扩展F1,然后插入连接的公式。
答案 4 :(得分:0)
在宏中很容易实现连接函数。你所做的只是放置'&amp;'在你想要连接的对象之间。在你的情况下,看起来像这样:
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),它将返回列中的条目数(如果存在间隙,将无法正常工作)。当没有更多数据时,使用值return和for循环来停止循环。
答案 5 :(得分:0)
这会将值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开始。