excel - 如何复制特定列中“是”的行的特定列
问题描述
客观的:
在名为“RPdata”的表中的“风险合作伙伴数据”表中存储有数据。在表中有一个名为“AICOW”的列,它包含两个结果,是或否。
在名为“Calc Data”的第二张表中,我想构建一个宏,该宏从最后一个填充单元格之后开始(但忽略数据之间为空的单元格),并且对于每一行都有“是”的结果AICOW,它将相应的 [RPdata@Parish] 复制到 A 行。
我所追求的结果是,在 A 列的末尾,宏将只为带有 AICOW(是)的教区添加教区名称,而不为其他教区添加教区名称。
我尝试过,但我的代码不起作用,我不确定它是否正确
Set Source = Sheet("Risk Partner Data")
Set c.FormulaR1C1 = _
"=if("RPdata[@[AICOW]]"=""Yes"","Yes",0)
Set Target = [RPdata@Parish]
Range("A1").End(xlDown).Offset(1, 0).Select
Selection.For each c in source.range(RPdata[@AICOW])
If c = "yes" Then
Source.Rows(c.Row).Copy Target.Rows(a)
a = a + 1
End If
End c
解决方案
不要循环,而是考虑一次性过滤和复制“教区”列中的可见单元格。
另外,考虑使用内置ListObject
和ListColumn
对象。
Sub CopyParishes()
Dim riskPartnerDataTbl As ListObject
Dim parishCol As ListColumn, AICOWcol As ListColumn
Dim copyRng As Range
Set riskPartnerDataTbl = ThisWorkbook.Worksheets("Risk Partner Data").ListObjects("RPdata")
With riskPartnerDataTbl
Set parishCol = .ListColumns("Parish")
Set AICOWcol = .ListColumns("AICOW")
.Range.AutoFilter Field:=AICOWcol.Index, Criteria1:="Yes"
End With
On Error Resume Next
Set copyRng = parishCol.DataBodyRange.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Not copyRng Is Nothing Then
copyRng.Copy
With ThisWorkbook.Worksheets("Calc Data")
.Cells(.Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
End If
riskPartnerDataTbl.Range.AutoFilter Field:=AICOWcol.Index
End Sub
推荐阅读
- java - 编写涉及使用参数运行类的命令
- python - 无法在 keras DNN 上正确上传 csv 数据集
- java - 遍历对象/列表
- typescript - 打字稿在被调用函数中更改时无法推断出正确的类型
- github - git lab ci 服务连接被拒绝
- r - 更改 Shiny R 中 selectInput 条目的颜色
- javascript - 如何在 JavaScript/Angular 中按货币名称将数字格式化为货币
- python - 在 python 中使用线性回归进行预测
- spring-boot - JPA - 如何复制和修改 Page 对象的内容?
- javascript - 如何从本地存储中获取数据并使用 javascript 在表中查看并进行下拉列表对表进行排序