【问题标题】:Excel: Copy-paste rows in between sheets depending on multiple criteriaExcel:根据多个条件在工作表之间复制粘贴行
【发布时间】:2012-11-23 03:05:12
【问题描述】:

感谢到目前为止的 cmets,它帮助我更好/不同地提出了我的问题。

我有两张工作表,Sheet1Sheet2
Sheet1 包含约 100,000 行 5 列和 Sheet2 应包含 Sheet1 的子组,具体取决于 Sheet1 中的行是否在某些列中包含某些值。

这是我到目前为止的代码。不知何故,VBA 没有给我任何错误,但代码也没有运行,这使得很难找到可能的解决方案。有人有什么想法吗?

Sub CopyRows()
Dim r As Integer
Dim cell As Range
r = 2
For Each cell In Selection
    If Application.WorksheetFunction.IsNA(Sheets("Sheet1").Cells(r, 1)) = False Then
        If Sheets("Sheet1").Cells(r, 3) = "Product1" or "Product2" Then
            If Sheets("Sheet1").Cells(r, 5) = "2011" or "2012" Then
                If Sheets("Sheet1").Cells(r, 4) > 0 Then
                cell.EntireRow.Copy Destination:=activesheet.Rows(r)
                r = r + 1
                End If
            End If
        End If
    End If
Next cell
End Sub

【问题讨论】:

  • 您不能在 Sheet1 中的表格上放置一个过滤器吗?
  • @iDevlop 我刚刚添加了一些代码和一些解释。
  • @Xophmeister 我不确定这是否可能,因为这种过滤只是我对两张纸做的许多事情之一。我需要考虑一下这个。
  • 我认为在开始编码之前,您需要更多地考虑如何构建解决方案。例如,您是要插入/删除行还是只显示/隐藏它们(您的问题不清楚)?每个人的代码都会有很大不同。想到其他问题:一家公司可以拥有三种产品吗?为什么CompanyA; Amsterdam; Product1; 0 行有两个实例?
  • 谢谢,是的,你是对的。我昨天在想,它可能不需要那么复杂。我有一个类似数据库的 Sheet1,我只想从那里“更正”行以进入 Sheet2。正确的意思是对于某些列具有特定值的所有行。我将重写我的问题并删除与我现在意识到的答案无关的隐藏代码。

标签: vba excel criteria


【解决方案1】:

对于这样的合并,我的第一个赌注是数据透视表;在你的情况下

  • 垂直的公司和城市
  • 产品水平放置(如果不是太多)
  • 内部值的计数或总和

最后加上一个过滤器来排除空的关键字段。

如果您安排 sheet1 以使第 1 行中只有一个标题行,则可以选择整个列(例如 $A:$D)作为数据透视表输入范围,并且任何其他行都将包含在数据透视表中刷新。

当然,数据透视表可以排序、过滤、小计等。

【讨论】:

  • 我只需要将值输入到不同的工作表中。从那里我将对其进行数据透视表无法执行的各种分析。除非我可以从数据透视表中获取我想要的数据并将其插入到工作表中?为了让自己清楚:),Sheet2 不是我的最后一张,可以这么说。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
  • 2014-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多