【问题标题】:Merge Columns in VBA在 VBA 中合并列
【发布时间】:2012-11-25 05:11:19
【问题描述】:

我需要处理我每天通过以下方式获取的文件。

C1  C2          C3
618 970000000000    32
    970000000000    32

58  970000000000    23
    970000000000    23
    970000000000    23

15  970000000000    119
    970000000000    119
    970000000000    119
    970000000000    119

15  970000000000    17
    970000000000    17

我需要根据 C1 的合并来合并 C3 中的单元格。请注意,C1 已经合并。 我希望它看起来像下面的

    C1  C2          C3
618 970000000000    32
    970000000000    

58  970000000000    23
    970000000000    
    970000000000    

15  970000000000    119
    970000000000    
    970000000000    
    970000000000    

15  970000000000    17
    970000000000    

可以用VBA写代码吗?

【问题讨论】:

  • 这类似于 SQL 中的 group by 输出。你如何得到你的输入文件?你合并的目的是什么?你打算怎么用?
  • 看来你不想减少行数;您想消除 C3 中的重复值。每个值块都由一个空白行分隔。如果这是真的,那么在 VBA 中似乎非常有可能。您转到 Excel 中的开发人员菜单项(我指的是 Excel 2010),单击 Visual Basic 按钮,然后在插入菜单项下,选择模块。在代码窗口中,键入您的 VBA 函数。
  • @BonCodigo...我的目的是让我的工作更轻松...这些值在我进行分析时会分散注意力。
  • @kermit,这些值不必重复。这只是我放在这里的一个专栏。还有 3 列具有所有不同的值

标签: excel merge multiple-columns vba


【解决方案1】:

假设您的数据在 A 到 C 列中,您可以使用以下代码:

Sub MergeMyCells()
firstRrow = 1
Range("C1").Select
lastRow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Cells(lastRow, 3).Select
For i = firstRow To lastRow
  Cells(i, 3).Select
  If (Not (ActiveCell.Offset(0, -2).Value > 0)) Then
    ActiveCell.Value = ""
  End If
Next
End Sub

【讨论】:

  • 您可以删除 for 循环中的 select 语句并将 ActiveCell 引用替换为 Cells(i,3) 以获得更好的性能
猜你喜欢
  • 2018-12-11
  • 2015-03-12
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
  • 2019-02-11
  • 2021-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多