【问题标题】:Excel/VBA code to automatically copy rows to another sheetExcel/VBA 代码自动将行复制到另一个工作表
【发布时间】:2013-12-16 23:54:18
【问题描述】:

我一直在尝试自己做这件事,并且搜索了谷歌,但对 VBA 一无所知。如果您知道自己在做什么,我相信这非常简单:

表 1 是主电子表格 B列是查询列

当 B 列中的单元格等于“X”时,我希望将整行复制到工作表 2 中,包括任何条件格式。

我希望这会自动发生并更新或覆盖工作表 2 中的数据(除了第 1 行,其中有标题)。

所以基本上工作表 2 应该始终包含工作表 1 中列 B = "X" 的所有行的精确副本。

任何帮助将不胜感激!

【问题讨论】:

  • 如果 Sheet1 中的一行有一个 X 然后被删除怎么办?是否应该删除 Sheet2 中的相应行? Sheet1 中的每一行是否都有唯一的“键”,以便可以识别 sheet2 中的对应行?
  • 嗨 Tim 是的,理想情况下,如果 X 被删除,那么应该删除 Sheet2 中的行。但是,如果这非常复杂,我可以没有它。是的,每一行在 A 列中都有一个唯一标识符

标签: excel vba


【解决方案1】:

假设您的数据从 sheet1 的 A1 开始,此宏会将其传输到 sheet2,覆盖 sheet2 中除第一行之外的所有内容。

Sub FilterAndCopy()
Dim sht1 As Worksheet, sht2 As Worksheet

Set sht1 = Sheets("Sheet1")
Set sht2 = Sheets("Sheet2")

intersect(sht2.UsedRange,sht2.rows("2:" & rows.count)).ClearContents

sht1.Cells(1, 1).CurrentRegion.AutoFilter
sht1.Cells(1, 1).CurrentRegion.AutoFilter 1, "X"
sht1.Cells(1, 1).CurrentRegion.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Copy sht2.Cells(2, 1)
sht1.Cells(1, 1).CurrentRegion.AutoFilter

End Sub

【讨论】:

  • 嗨 - 由于某种原因,这似乎不起作用。当我调试它突出显示以下内容: sht2.UsedRange.Resize(sht2.UsedRange.Rows.Count - 1).Offset(1).ClearContents
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-19
  • 2019-05-02
  • 1970-01-01
  • 2013-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多