我正在寻找这个code
的替代品,但是使用数字。
我想选择5列,start列是一个变量,然后从中选择5列。
Columns("A:E").Select
如何使用integers
来引用列?像下面的东西?
For n = 1 to 5
Columns("n : n + 4") .select
do sth
next n
感谢。 Gemmo
答案 0 :(得分:25)
您可以像这样使用调整大小:
For n = 1 To 5
Columns(n).Resize(, 5).Select
'~~> rest of your code
Next
在您执行的任何范围操作中,始终牢记调整大小和偏移属性。
答案 1 :(得分:5)
Columns("A:E").Select
可以直接替换为
Columns(1).Resize(, 5).EntireColumn.Select
其中1可以由变量替换
n = 5
Columns(n).Resize(, n+4).EntireColumn.Select
在我看来,你最好处理一列列而不是循环遍历n到n + 4列,因为它更有效。
此外,使用select会降低代码速度。因此,不要选择列,然后对选择执行操作,而是尝试直接执行操作。下面是将A-E列的颜色更改为黄色的示例。
Columns(1).Resize(, 5).EntireColumn.Interior.Color = 65535
答案 2 :(得分:3)
您可以range
与cells
一起使用以获得您想要的效果(但如果您不必使用,最好不要使用选择)
For n = 1 to 5
range(cells(1,n).entirecolumn,cells(1,n+4).entirecolumn).Select
do sth
next n
答案 3 :(得分:1)
尝试使用以下内容,其中n
是您的变量,x是您的偏移量(在这种情况下为4):
LEFT(ADDRESS(1,n+x,4),1)
这将返回该列的字母(因此对于n = 1且x = 4,它将返回A + 4 = E)。然后,您可以使用INDIRECT()
来引用它,如下所示:
COLUMNS(INDIRECT(LEFT(ADDRESS(1,n,4),1)&":"&LEFT(ADDRESS(1,n+x,4),1)))
,其中n = 1,x = 4变为:
COLUMNS(INDIRECT("A"&":"&"E"))
所以:
COLUMNS(A:E)
答案 4 :(得分:1)
不需要循环或类似..尝试这个..
d1 d2
id data id data
-- ---- -- ----
1 1 1 2
2 4 2 5
3 6 3 3
Result
id list
-- ----
1 [1,2]
2 [4,5]
3 [6,3]
答案 5 :(得分:0)
您可以将地址指定为" R1C2"而不是" B2"。在文件 - >下选项 - > Formuals - >使用公式有一个切换 R1C1参考样式。可以设置,如下图所示。
答案 6 :(得分:0)
我正在寻找类似的东西。 我的问题是根据第5行找到最后一列,然后在包括最后一列之前选择3列。
Dim lColumn As Long
lColumn = ActiveSheet.Cells(5,Columns.Count).End(xlToLeft).Column
MsgBox ("The last used column is: " & lColumn)
Range(Columns(lColumn - 3), Columns(lColumn)).Select
消息框是可选的,因为它更多地是控件检查。如果要选择最后一列之后的列,则只需反转范围选择
Dim lColumn As Long
lColumn = ActiveSheet.Cells(5,Columns.Count).End(xlToLeft).Column
MsgBox ("The last used column is: " & lColumn)
Range(Columns(lColumn), Columns(lColumn + 3)).Select
答案 7 :(得分:-1)
通过这种方式,您甚至可以在“Z”列后面开始选择数据并选择很多列。
Sub SelectColumNums()
Dim xCol1 As Integer, xNumOfCols as integer
xCol1 = 26
xNumOfCols = 17
Range(Columns(xCol1), Columns(xCol1 + xNumOfCols)).Select
End Sub
答案 8 :(得分:-1)
在下面的示例代码中,我使用变量来显示该命令如何用于其他情况。
FirstCol = 1
LastCol = FirstCol + 5
Range(Columns(FirstCol), Columns(LastCol)).Select