excel - 如何使用列名在 Excel 过滤表中选择多个不相邻的列
问题描述
我正在尝试将多个不相邻的列从过滤表复制到另一张表。我被多项选择部分困扰:
*数据来自外部来源->我无法控制原始结构
*过滤条件来自我不需要复制的列->我无法跳过导入列我不需要复制。
* 表格已过滤 -> 我不能简单地选择列(例如 C:C),我只需要过滤后的行。
是否可以通过使用标题名称来做到这一点?
我尝试了几行代码(见下文),但都没有产生预期的结果。如果我录制一个宏,我只会得到范围选择:
Range("C155:C30230,E155:E30230").Select
这是我到目前为止所尝试的,按结果分组:
请注意,这些是测试代码,所以它不一定引用相同的列-> 工作,但不完全是我想要的:
' this is only one column
Range("myTable[[#Headers],[Email]]").Select
' this is full (unfiltered) column selection
Union(ws.Range("C:C"), ws.Range("E:E")).Select
' this is not using header name
Union(ActiveSheet.ListObjects("myTable").ListColumns(3).Range, ActiveSheet.ListObjects("myTable").ListColumns(5).Range).Select
->这些片段生成运行时错误“对象
'_Worksheet'的方法'范围'失败”:
Union(Range("myTable[[#Headers],[Email]]").Select, Range("myTable[[#Headers],[Language]]").Select)
Dim rng As Range
Set rng = Union(Range("myTable[[#Headers],[Email]]"), Range("myTable[[#Headers],[Language]]"))
Union(Range("myTable[[#Headers],[Email]]"), Range("myTable[[#Headers],[Language]]")).Select
Union(Range("myTable[[#Headers],[Email]]"), Range("A:A")).Select
->此代码段生成错误“编译错误:类型不匹配”:
Dim rng As Range
Set rng = Union(Range("myTable[[#Headers],[Email]]").Address, Range("myTable[[#Headers],[Language]]").Address)
我在此阶段的目标是查看选择的所有必需的已过滤表列。
谢谢你看这个
解决方案
这对我有用。
Sub x()
With ActiveSheet.ListObjects(1)
Union(.ListColumns(1).Range, .ListColumns(3).Range).SpecialCells(xlCellTypeVisible).Copy Range("A18")
End With
End Sub
这里有一个很好的表格指南。
推荐阅读
- sqlplus - SQLPlus - 查询输出的格式
- android - 视频作为闪屏?
- asp.net-core - 具有多个代理的 HttpClient
- git - Git 不跟踪文件夹
- android - 在每个卡片视图中都有一个微调器 - recyclerview 中的卡片视图
- schema - Orientdb maximum number of classes
- bash - Bash - 创建一个带有通配符元素的数组以进行匹配
- avasset - Failed to initialize an AVAssetExportSession (iPhone XS, XR, XMax)
- google-cloud-platform - What is easiest way to deploy using docker-compose.yml on GCP in 2018?
- haskell - 尝试在 Haskell 中构建树