【问题标题】:Concatenate every other row in Excel连接Excel中的每隔一行
【发布时间】:2013-08-01 03:56:05
【问题描述】:

我有一个如下所示的 Excel 工作表:

3  | latitude | 46.142737

3  | longitude| -57.608968

8  | latitude | 43.142737

8  | longitude| -52.608968

15 | latitude | 41.142737

15 | longitude| -59.608968

我需要这样的最终结果:

3  | 46.142737, -57.608968

8  | 43.142737, -52.608968

15 | 41.142737, -59.608968

它可以基于每隔一行连接,也可以基于第一列中的整数值连接。

VBA 建议?谢谢。

编辑:没有实际的“|”在我的 Excel 表中。 “|”旨在作为表示新列的视觉提示。

【问题讨论】:

  • 您可以使用过滤器并将“纬度”过滤掉。或者你想写一个可重用的代码?

标签: excel vba concatenation


【解决方案1】:

您可以将数据读入数组,然后将其写入范围

原始数据:

结果:

代码:

Sub Example()
    Dim i As Long
    Dim x As Long
    Dim arry As Variant

    ReDim arry(1 To 2, 1 To 1) As Variant

    For i = 1 To ActiveSheet.UsedRange.Rows.Count
        If Cells(i, 1).Row Mod 2 = 1 Then
            x = x + 1

            ReDim Preserve arry(1 To 2, 1 To x) As Variant
            arry(1, x) = Cells(i, 1).Value
            arry(2, x) = Cells(i, 3).Value & ", " & Cells(i + 1, 3).Value
        End If
    Next

    arry = WorksheetFunction.Transpose(arry)
    Sheets("Sheet2").Select
    Range(Cells(1, 1), Cells(UBound(arry), UBound(arry, 2))).Value = arry
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多