我有大约 15k 行,每行有 3 列类似于以下结构。
ID 标题 描述
0 短标题 关于该列的一些详细描述
我想将列中的每个单词都大写,Title
这样它就会显示为:
A Short Title
有没有办法做到这一点?
我有大约 15k 行,每行有 3 列类似于以下结构。
ID 标题 描述
0 短标题 关于该列的一些详细描述
我想将列中的每个单词都大写,Title
这样它就会显示为:
A Short Title
有没有办法做到这一点?
=PROPER(B2)
该公式可以将字符串中每个单词的第一个字符大写。
编辑:如果您想手动执行此操作,请将公式复制到列中以执行此操作。
您可以转到包含公式的单元格。在右下角,当您将鼠标悬停在单元格上时,您会看到一个 + 号 - 当您看到它时双击右下角。
这会将公式复制到当前行下面的行,直到它发现它前面的列中有数据。
EDIT2:使用代码
Option Explicit
Sub ChangeAllCellsInThisColumnToProperCase(ByVal StartCell As Range)
Dim LastCell As Range
Set LastCell = StartCell.End(xlDown)
Dim data
Dim RangeToCover As Range
Set RangeToCover = Range(StartCell.Address & ":" & LastCell.Address)
data = RangeToCover.Value
Dim CountOfCells As Long
CountOfCells = RangeToCover.Cells.Count
Dim Counter, element
For Counter = 1 To CountOfCells
element = data(Counter, 1)
element = WorksheetFunction.Proper(element)
data(Counter, 1) = element
Next
Range(StartCell.Address & ":" & LastCell.Address).Value = data
End Sub
EDIT3:手动进行(在@mehow 的评论之后) - 在另一个空列(比如 F 列)中输入公式,在 B2 上执行正确的案例。
- 复制公式,选择要应用此公式的其余单元格。
- 选择性粘贴 -> 公式
- 复制 F 的列内容
- 转到 B 列的第一个单元格,执行选择性粘贴 -> 值。
要在单个列上快速运行,您可以使用变体数组
对于 B 列:
Sub QuickUpdate()
Dim X()
Dim lngRow As Long
X = Range([b1], Cells(Rows.Count, "B").End(xlUp)).Value2
For lngRow = 1 To UBound(X, 1)
X(lngRow, 1) = Application.Proper(X(lngRow, 1))
Next lngRow
[B1].Resize(UBound(X, 1), UBound(X, 2)).Value2 = X
End Sub