是否可以循环使用列字母?
For col = A to Z
column(col:col).select
selection.copy
Next
或者我是否有义务使用函数将字母转换为数字?
答案 0 :(得分:1)
将公式转换为值:
Dim cols As Range, c As String
Set cols = UsedRange.Columns
For Each c In Split("N Q T") ' add the rest of the column letters
cols(c).Value = cols(c).Value ' or .Value2 if no dates or currencies in the range
Next
如果它是列N
中的每三个列,则另一种方法可以是:
Dim col As Range, i As Long
Set col = UsedRange.Columns("N")
For i = 1 To 17 ' to repeat 17 times
col.Value = col.Value
Set col = col.Offset(, 3)
Next
答案 1 :(得分:0)
无需将字母转换为数字,因为您可以将字母传递给Columns
和Cells
:
Columns("B") 'the same as Columns(2)
Cells(1, "B") 'same as Cells(1, 2)
然而,通过字母循环是一种麻烦,你必须首先将一个数字转换成一个字母,例如使用Chr(64 + Num)
答案 2 :(得分:0)
我不知道是否需要花费大量的计算时间,但实际上我已经
了Columns("N:N").Select
selection.Copy
selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("Q:Q").Select
selection.Copy
selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("T:T").Select
selection.Copy
selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
我有17次这一组排,你认为这是浪费时间吗?
修改强>
回答下面评论中的链接,感谢@Rdster
答案 3 :(得分:0)
我建议使用以下两种解决方案之一: 1-列A是第一列,Z是第26列
'Declaration
Dim iFirstCol as integer
Dim iLastCol as integer
iFirstCol = 1 'the first column (A)
iLastCol = 26 'the last column (Z)
'Looping
FOR col = iFirstCol to iLastCol
Columns(col:col).Select
Selection.Copy
'....
LOOP col
2-字母A到Z的ASCII值为65到90.
'Declaration
Dim Cols as string
您的循环可以轻松转换为:
'Looping
FOR col = 65 to 90
Cols=CHR(col) & ":" & CHR(col)
Columns(Cols).Select
Selection.Copy
'...
LOOP col
希望这有帮助!