如何在excel单元格中大写每个单词?
问题描述:
我有大约15k行,每个行有3列类似于以下结构。如何在excel单元格中大写每个单词?
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
谢谢就是这样。但是,你能解释一下如何将它应用到我所有的行上吗? – 2013-03-18 08:30:26
啊,刚刚找到它。再一次感谢你。 – 2013-03-18 08:33:55
好,因为B列中有值,所以他不能在实际列上使用此公式,因为如果他试图插入它,它将删除他的值。所以,我不明白为什么这是最好的答案lol – 2013-03-18 13:57:24