
[英]How can I replace values in one Excel column with values concatenated from a variable number of columns in the same row?
[英]Is there a way by which I can select particular columns from an excel sheet based on the column number?
我有一个具有数千列的excel工作表,我想选择其中的一些,每一个都有一个列号,有没有办法我可以选择满足特定条件的列? 例如编号为50、70、120、154、200的列。如何从具有2000列的Excel文件中选择它们? 有没有宏可以做到这一点? 谢谢
以@Wujaskun的答案为基础,您可以执行以下操作,该操作将允许您仅在一行中指定列号,而无需重复编码:
Sub select_columns()
Dim myColumns As Range
myColumnNumbers = Array(1, 5, 9, 13, 17) '.. and on and on..
ReDim myColumn(UBound(myColumnNumbers)) As Range
For Each c In myColumnNumbers
If myColumns Is Nothing Then
Set myColumns = Columns(c).EntireColumn
Else
Set myColumns = Union(myColumns, Columns(c).EntireColumn)
End If
Next
myColumns.Select
Set myColumns = Nothing
End Sub
请稍作警告,请勿重复列号(或至少重复第一个列号),因为这将导致联盟重置。
编辑 -现在,我已经改进了代码,以允许(或至少不会引起问题)如果重复第一列号。
您可以使用union
来选择多个列。 我创建了一个简短的宏,只是为了让您了解它的工作原理。
Sub select_columns()
Dim myColumns, myColumn(1 To 5) As Range
Set myColumn(1) = Columns(1).EntireColumn
Set myColumn(2) = Columns(3).EntireColumn
Set myColumn(3) = Columns(5).EntireColumn
Set myColumn(4) = Columns(7).EntireColumn
Set myColumn(5) = Columns(9).EntireColumn
Set myColumns = Union(myColumn(1), myColumn(2), myColumn(3), myColumn(4), myColumn(5))
myColumns.Select
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.