0

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

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

……

谢谢你。

4

6 回答 6

1

像这样的东西(未经测试)

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
于 2013-08-01T16:10:23.977 回答
1

这会将 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 开始。

于 2013-08-02T03:58:34.863 回答
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
于 2013-08-01T16:06:37.987 回答
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

经过测试

于 2013-08-01T16:35:13.013 回答
0

连接函数很容易在宏中实现。您所要做的就是在要连接的对象之间放置一个“&”。在你的情况下是这样的:

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 循环来停止循环。

于 2013-08-01T22:16:26.073 回答
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 周围的数据块,将 F1 扩展为行数,然后插入一个连接的公式。

于 2013-08-01T18:20:52.390 回答