次の構造のような 3 列を持つ約 15,000 行があります。
ID タイトル 説明
0 短いタイトル この列に関する長い説明
Title
列内のすべての単語を大文字にしたいので、次のように表示されます。
A Short Title
これを達成する方法はありますか?
次の構造のような 3 列を持つ約 15,000 行があります。
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のコメントの後)-B2で適切なケースを行う別の空の列(列Fなど)に式を入力します。
- 数式をコピーし、この数式を適用する残りのセルを選択します。
- 特殊貼り付け -> 数式
- 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