【问题标题】:Trouble filtering, outputting, and shorting this data过滤、输出和短路此数据的问题
【发布时间】:2017-08-03 21:03:15
【问题描述】:

大脑融化了。我知道 Stackoverflow 不进行免费编码,但我不知道如何开始。我正在尝试使用 VBA 脚本从左侧过滤和输出数据,使其看起来像右侧的数据。关于如何实现这一点的任何建议?

【问题讨论】:

  • (1) 从第一条记录中读取源名称,在目标名称中搜索。如果未找到,请将名称添加到目标名称。 (2) 在目标名称中查找源名称(它现在肯定会在那里),如果对应的源列是“x”,则将其他列更新为“x”。 (3) 重复下一条记录。 (可能有更简单的方法可以做到这一点,但我很饿,现在没有思考。)

标签: excel vba


【解决方案1】:

这可能会让你开始:

Sub mergeCategoryValues()
  Dim lngRow As Long

  With ActiveSheet
      Dim columnToMatch As Integer: columnToMatch = 2
      Dim columnToConcatenate As Integer: columnToConcatenate = 4
      Dim columnToSum As Integer: columnToSum = 5

      lngRow = .Cells(65536, columnToMatch).End(xlUp).Row
      .Cells(columnToMatch).CurrentRegion.Sort key1:=.Cells(columnToMatch), Header:=xlYes

      Do
          If .Cells(lngRow, columnToMatch) = .Cells(lngRow - 1, columnToMatch) Then
              .Cells(lngRow - 1, columnToConcatenate) = .Cells(lngRow - 1, columnToConcatenate) & .Cells(lngRow, columnToConcatenate)
              .Cells(lngRow - 1, columnToSum) = .Cells(lngRow - 1, columnToSum) + .Cells(lngRow, columnToSum)
              .Rows(lngRow).Delete
          End If

          lngRow = lngRow - 1
      Loop Until lngRow = 1
  End With
End Sub

改编自以下代码:Excel VBA - Combine rows with duplicate values in one cell and merge values in other cell
您需要弄清楚的是删除第一列并使变量更具动态性。让我知道这是否有帮助。

【讨论】:

  • 很高兴能帮上忙,祝您有美好的一天。
猜你喜欢
  • 2015-05-07
  • 2019-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-28
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多