gpt4 book ai didi

excel - VBA Excel 筛选数据并复制到另一个工作表 - 新手警报

转载 作者:行者123 更新时间:2023-12-04 00:12:10 77 4
gpt4 key购买 nike

您好,我是 VBA Excel 的新手。

我正在尝试过滤一个充满数据的可变大小电子表格,以在一列中查找一组词。找到后,我想将整行复制到另一个工作表。

因为它们可能不止一行包含这个词,所以我不想覆盖之前复制的行。

这是我为查找单词而创建的内容,但如何将行复制到另一个工作表?

Sheets("Sheet1").Select                                 'Select datasheet
Range("A1").Select 'Set cell position to start search from

Do Until Selection.Offset(0, 4).Value = "" 'word to be searched is 4 cell in
'do what is required
If Selection.Offset(0, 4).Value = "UKS" Then
MsgBox "Found" 'Found it!
'not sure how to copy row to another worksheet
End If

'finish move on to next one in list
Selection.Offset(1, 0).Select 'move down 1 row
Loop

Range("A1").Select ' reset cell position

如有任何帮助,我们将不胜感激,请您解释一下它是如何工作的以及我想理解的,而不仅仅是复制。

杰森

最佳答案

往下看,也许它会给你线索。不过,我会尽量评论细节,让您更深入地了解此事。

我的示例有点复杂,因为它同时对两列应用过滤,但如果您能理解它的复杂性,那么它对您有好处,因为您可以进一步应用它。

 With Sheets("Source")
.AutoFilterMode = False
With .Range("$A$21" & ":" & "$C$" & 300)
.AutoFilter Field:=1, Criteria1:=Array("April", "August", "Dezember", "Februar", "Januar", "Juli", "Juni", "Mai", "März", "November", "Oktober", "September"), Operator:=xlFilterValues
.AutoFilter Field:=2, Criteria1:="<>"
ActiveSheet.AutoFilter.Range.Copy
Sheets("Chart").Select
Range("A7").Select
Sheets("Chart").Paste
End With
End With

那么,这是关于什么的:

代码逻辑是

  • 按月份名称(即德语)过滤两列第 1 列,第 2 列通过消除空白/空单元格来过滤元素

With Sheets("Source") .AutoFilterMode = False With .Range("$A$21" & ":" & "$C$" & 300) .AutoFilter Field:=1, Criteria1:=Array("April", "August", "Dezember", "Februar", "Januar", "Juli", "Juni", "Mai", "März", "November", "Oktober", "September"), Operator:=xlFilterValues

  • 包含要应用过滤的表的工作表的名称是“源”。将 .Autofiltering 保留为 false

    .AutoFilterMode = False

  • 过滤值设置如下:第 1 列

.AutoFilter Field:=1, Criteria1:=Array("April", "August", "Dezember", "Februar", "Januar", "Juli", "Juni", "Mai", "März", "November", "Oktober", "September"), Operator:=xlFilterValues

第 2 栏

.AutoFilter Field:=2, Criteria1:="<>"

  • 最后但并非最不重要(非常重要)的是范围(应用过滤的表格的单元格)

With .Range("$A$21" & ":" & "$C$" & 300)

在这种情况下,我的示例将过滤器应用于从 A21 开始到 C300 结束的一系列单元格(实际上是表格)。

为什么选择 A21?因为那是我的数据被复制的地方。总是从 A21 开始。

为什么是 C300? 因为最大行数永远不会超过 (300-21)=279 行我的数据模型在任何时候都不会超过 279 行未过滤的行,您可以根据您的假设输入更大的数字。如果有更多行,没关系,因为我通过消除空格来过滤它们,请参见上文。

顺便说一下,“kosher”版本是通过 VBA 计算行数并在定义范围时使用它。

您可以简单地使用一个非常大的数字来覆盖表格中可能的行数。

乍一看,计算行数对您来说可能有点复杂,但最终还是要花钱的。

假设您想计算 B 列中的行数(变量) FinalRowChartSheet = Range("B7").End(xlDown).Row

祝你一切顺利。希望对您有所帮助。

如果您觉得有用,请不要忘记为我的回答打分。谢谢。

关于excel - VBA Excel 筛选数据并复制到另一个工作表 - 新手警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33009016/

77 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com