Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel宏将整个列更改为大写_Excel_Vba - Fatal编程技术网

Excel宏将整个列更改为大写

Excel宏将整个列更改为大写,excel,vba,Excel,Vba,我正在尝试更新工作簿,我必须将所有电子邮件从小写改为大写。 我对宏还不是很在行,但我想出了这个,但它需要永远运行。(只有约1k行) 我应该用些更好的吗 tl;dr我需要将整个列的大小写改为大写。试试这个。循环遍历B列中的每个单元格,这就是它速度慢的原因 Sub Uppercase() ' Loop to cycle through each cell in the specified range. For Each x In Range("B1:B" & Range("B"

我正在尝试更新工作簿,我必须将所有电子邮件从小写改为大写。 我对宏还不是很在行,但我想出了这个,但它需要永远运行。(只有约1k行)

我应该用些更好的吗


tl;dr我需要将整个列的大小写改为大写。

试试这个。循环遍历B列中的每个单元格,这就是它速度慢的原因

Sub Uppercase()
   ' Loop to cycle through each cell in the specified range.
   For Each x In Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row))
      ' Change the text in the column to uppercase letters.
      x.Value = UCase(x.Value)
   Next
End Sub

根本不需要循环,这基本上可以立即解决:

Sub tgr()

    With Range("B1", Cells(Rows.Count, "B").End(xlUp))
        .Value = Evaluate("INDEX(UPPER(" & .Address(External:=True) & "),)")
    End With

End Sub

一次完成整个范围:

Range("B:B") = [index(Upper(B:B),)]

很好,但是在选择中使用这样的功能更方便用户

Sub-ToUpper()
对于选择中的每个单元格
如果不是cell.has公式,那么
cell.Value=UCase(cell.Value)
如果结束
下一个
端接头

看起来大家都同意你的观点。但是说实话。。。我不知道那是怎么回事。你介意把背景放在后面吗?或者发布完成的代码?我喜欢这里宏的初级编码。。。但我正在努力学习。好吧,它会进入你的潜艇。或者,如果它是一次性的,只需将它弹出调试窗口(Excel中VB编辑器中的CTRL-G)并按enterOh,这就是全部代码。哈好啊这就是我所误解的。谢谢,这确实很快就解决了。如果距离长,这个距离循环仍然会很慢,上面的单短方法会更好。
Range("B:B") = [index(Upper(B:B),)]