使用宏连接列D和C.

时间:2013-08-01 16:04:27

标签: excel vba excel-2010 concatenation

请帮助您使用Excel 2010宏连接单元格。我有A列到E列。我想在F列中连接D和C列。请注意我不知道D列和C列中的确切行数,但是当宏中没有值时,宏应该停止连接专栏说。样品:

A     B      C           D         E         F
0   Exist   Echalas    Gerald     25256    Gerald Echalas

...

谢谢。

6 个答案:

答案 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开始。