
A列からT列、
行は10000行ほどあるのですが
全てを半角にしたいのですがマクロでないと無理でしょうか?
Sub 全てを半角にする()
Dim row行 As Long
Dim col列 As Long
For col列 = 1 To Range("IV1").End(xlToLeft).Column
For row行 = 2 To Cells(65536, 2).End(xlUp).Row
Cells(row行, col列) = StrConv(Cells(row行, col列), vbNarrow)
Next row行
Next col列
End Sub
でやるしかないですか?
もっと効率のいい方法があったら教えてください!
No.4ベストアンサー
- 回答日時:
こんにちは。
本当は、「具体的に、何を半角にするのでしょうか。」を教えてほしかったのですが、見切りで作ってみました。
Sub Test1()
Dim c As Range
Dim rng As Range
On Error GoTo ErrHandler
Set rng = ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues)
Application.ScreenUpdating = False
For Each c In rng.Cells
'そのままでも一応同じですが、全角数字をプレフィックスで保護しました。
If c.Value Like "[0-9]*" Then
c.Value = "'" & StrConv(c.Value, vbNarrow)
Else
c.Value = StrConv(c.Value, vbNarrow)
End If
Next c
Set rng = Nothing
Application.ScreenUpdating = True
ErrHandler:
End Sub
No.3
- 回答日時:
こんにちは。
質問の主旨は、時間が掛かるから、「効率のいい方法」はないか、ということですね。
>For col列 = 1 To Range("IV1").End(xlToLeft).Column
>For row行 = 2 To Cells(65536, 2).End(xlUp).Row
まず、ありえないです。UsedRange で範囲を取って、
For Each c in 範囲
で処理します。Evaluate は、オブジェクトを呼び出すわけですから、StrConv のほうがよいです。
しかし、全部を半角にするというけれど、カタカナがあったら、それも半角にするのでしょうか?
具体的に、何を半角にするのでしょうか。Excelの場合は、総なめに半角するほどのものはないような気がします。
文字列だけになるはずですから、UsedRangeから、SpecialCellsで、文字列だけを拾い出して、半角をするようにすればよいと思います。これは、記録マクロで取れるはずです。それに、数字だけに限定していくとか、範囲を絞ればよいのです。
ただし、SpecialCells で取ると、その範囲は、Areas になってしまいますから、
For Each c in 範囲.Cells として、c にセルが入るようにするのがコツです。
>置換や検索のようにピッ!とできないかなと思い質問しました。
セルには、Range オブジェクトがあるので、一括でするというのは、基本的にはないはずです。正規表現ツールを考える人もいますが、オブジェクトのインスタンスを作ってから使うのですから、オーバーヘッドが掛かって意味がないと思います。テクにこだわると、本質が見えなくなります。まあ、やってみないとわかりませんが。
No.2
- 回答日時:
こんなでいいのかな?
Sub 全てを半角にする()
Dim row行 As Long
Dim col列 As Long
Dim range範囲 As Range
col列 = Range("IV1").End(xlToLeft).Column
row行 = Cells(65536, 2).End(xlUp).Row
Set range範囲 = Range("A1", Cells(row行, col列))
range範囲 = Evaluate("asc(" & range範囲.Address & ")")
End Sub
>でやるしかないですか?
方法はいくらでもあると思いますが
>もっと効率のいい方法があったら教えてください!
理解してるやり方で、いいと思いますけどね
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba マージエリアの行数を非表...
-
VBAで別ブックの列を検索し、該...
-
VBA
-
Excel 区切り位置指定ウィザー...
-
「段」と「行」の違いがよくわ...
-
エクセルで最初の行や列を開け...
-
Excel 対戦成績の集計式
-
横軸を日付・時間とするグラフ化
-
エクセルで離れた列を選択して...
-
エクセル 任意の列数で分割する...
-
エクセルでセル12個間隔で合...
-
別のブック最終行最終列の次へ...
-
Alt+Shift+↑を一括で行うには、...
-
エクセル マクロ データの条...
-
Excel UserForm の表示位置
-
ExcelVBAでテキストルーレット...
-
【VBA】写真の貼り付けコードが...
-
あああ..ああい..ああう とい...
-
エクセルVBA ダブルクリックし...
-
複数の列の値を結合して別の列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
vba マージエリアの行数を非表...
-
VLOOKUPの列番号の最大は?
-
列方向、行方向の定義
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
Excelの行数、列数を増やしたい...
-
エクセル マクロ 範囲指定で...
-
エクセルのソートで、数字より...
-
VBAで結合セルを転記する法を教...
-
エクセルで最初の行や列を開け...
-
VBAで別ブックの列を検索し、該...
-
横軸を日付・時間とするグラフ化
-
Excel文字列一括変換
-
最近急にVBAの処理速度が遅くな...
-
csvデータの列の入れ替えができ...
-
データシートビューのタイトル...
-
エクセルマクロPrivate Subを複...
-
CSVファイルの「0落ち」にVBA
おすすめ情報