gpt4 book ai didi

excel - 列中单元格的大写字母

转载 作者:行者123 更新时间:2023-12-04 21:29:10 24 4
gpt4 key购买 nike

我正在尝试将所有包含 B2 列及以下数据的单元格中的所有字母更改为大写字母。得到这个VBA。

Sub CapitalLettersColumnB()

'Capital Letters to names in column B (from B2 and down)
'Column B holds headers!

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

End Sub

当我的工作表包含 2 行数据(以及更多)时,不计算标题,vba 工作得很好。
但是当我的工作表只包含 1 行数据,不计算标题时,B 列(单元格 B2)中的名称将替换为 #值(value)! .
任何人都可以帮助找出问题所在,以及如何纠正我的 vba?

最佳答案

问题是INDEX .该函数返回 Range 中的位置或 Array ,而不是单个值。如果您要评估公式,它将归结为:

=INDEX("VALUE",)

而不是正确的:
=INDEX({"VALUE1","VALUE2"},)

不喂 INDEX然后范围或数组将返回错误

要更正您的代码,您需要确保始终有一个大于一个单元格的范围对象,例如:
Sub CapitalLettersColumnB()

With Range("B1", Cells(Rows.Count, "B").End(xlUp))
.Value = Evaluate("IF(ROW(" & .Address & ")>1,INDEX(UPPER(" & .Address & "),)," & .Address & ")")
End With

End Sub

这将从 B1 开始工作。之后,但会通过 ROW 保留该单元格。在我们的 IF 中进行测试陈述。

另一个小提示,我肯定会使用明确的单元格引用(至少包括一个工作表)

关于excel - 列中单元格的大写字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58989378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com