如何在excel单元格中大写每个单词?

我有大约15k行,每个有三列类似于以下结构。

ID标题说明
0一个简短的标题关于这个专栏的一些长描述

我想要在Title列中大写每个单词,所以它会显示为:
A Short Title

有没有办法做到这一点?

 =PROPER(B2) 

该公式可以利用string中每个单词的每个第一个字符。

编辑:如果你想要手动做到这一点,复制整个列的公式。
你可以转到含有配方的细胞。 在右下angular,当你将鼠标hover在单元格上时,会看到一个+符号 – 当你看到这个时,双击右下angular。

这会将公式复制到当前行下方的行,直到find在其之前的列中有数据。

编辑2:使用代码

 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 

编辑3:手动(在@ mehow的评论之后) – 在另一个空列(例如F列)中input公式,在B2上做一个正确的情况。
– 复制公式,select希望应用此公式的单元格的其余部分。
– select性粘贴 – >公式
– 复制F的列内容
– 转到B列的第一个单元格,执行“粘贴特殊” – >“值”。

要在单个列上快速运行,可以使用variables数组

对于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