エクセルでのデータの統一に関して
リストを作成する際、元データをコピペでリストに転記しており、元データの提供者が全角や半角、氏名の間にも全角半角のスペースなど混在しており、データ管理が煩雑化しております。
転記する際に確認して実施をすれば問題はございませんが、目視ですと見落としの可能性もございますし、非効率とおもいます。
つきましては、VBAまたは関数などで、整形や変換をして全角半角を意識せず管理をしたいです。
該当セルに半角を入れると弾かれ全角でしか入れられないようにポップアップなども表示されると尚嬉しいです。
実際にこうしているなどのアイディアがございましたら、ご教示いただけますと幸いです。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんちには。
過去ほぼスルーされたソースコードですが、1度試してみてください。
VBA でブック内の全シートをまとめて全角英数を半角化、半角カナを全角化に正規化します。
適当なブックを作って Visual Basic Editor を開き、標準モジュールを挿入、以下ソースコードをコピペ。
全半角の正規化対象となるブックをアクティブにしてからマクロを実行です。
' 定数セルのみ対象(数式やシェープは対象外)
'
Public Sub 全シートの全角半角を統一()
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
If sh.ProtectContents Then
MsgBox "シート [" & sh.Name & "] は保護されています", vbExclamation
Else
'英数字の半角化
Call RegStrConvertInWorksheet(sh, "([0-9a-zA-Z]+)", vbNarrow)
'半角カナの全角化
Call RegStrConvertInWorksheet(sh, "([ー\uFF61-\uFF9F]+)", vbWide Or vbKatakana)
End If
Next
End Sub
Private Sub RegStrConvertInWorksheet( _
ByRef sh As Worksheet, _
ByRef reg_pattern As String, _
ByVal mode As VbStrConv _
)
If Len(reg_pattern) = 0 Then Exit Sub
On Error Resume Next
Dim datas As Range
Set datas = sh.Cells.SpecialCells(xlCellTypeConstants, xlTextValues)
On Error GoTo 0
If datas Is Nothing Then Exit Sub
On Error GoTo Err_Handler
Dim reg As Object 'RegExp
Set reg = CreateObject("VBScript.RegExp")
With reg
.Pattern = reg_pattern
.Global = True
.IgnoreCase = False
End With
Dim area As Range
For Each area In datas.Areas
Dim buff As Variant: buff = area.Value
If Not IsArray(buff) Then
Dim tmp As Variant: tmp = buff
ReDim buff(1 To 1, 1 To 1)
buff(1, 1) = tmp
End If
Dim i As Long, j As Long
For i = 1 To UBound(buff)
For j = 1 To UBound(buff, 2)
Dim mc As Object 'MatchCollection
Dim m As Object 'Match
Set mc = reg.Execute(buff(i, j))
For Each m In mc
buff(i, j) = Replace$(buff(i, j), m, StrConv(m, mode))
Next
Set mc = Nothing
Next
Next
area.Value = buff
Next
Finally:
Set reg = Nothing
Exit Sub
Err_Handler:
MsgBox Err.Description, vbCritical, "ERROR: Procedure: RegStrConvertInWorksheet"
End
End Sub
No.1
- 回答日時:
半角から全角にするにはJIS関数を使う。
VBAでは、h$が半角を含む文字列のとき、
z$ = StrConv(h$, vbWide)
で全角だけの文字列z$が得られます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELでの文字・数字入力の基本について教えてください。 2 2023/05/29 23:17
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
- iOS これは日本語入力の大発明ですか? 7 2022/12/21 07:17
- PHP Postgresの特定のカラムからスペースを取る方法 1 2023/02/22 13:18
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) excelにおける転記マクロの書き方 2 2023/05/12 03:16
- その他(Microsoft Office) Excelの表記ゆれについて <状況詳細> 7000人を対象とした一覧表があり、それぞれが各支社やチ 2 2023/06/02 15:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テプラは半角数字が使えますか?
-
半角の『°(単位の度)』
-
半角スペース
-
半角の×(かける)は?
-
℃の半角表示
-
Excel2016 検索の窓を常時表示...
-
関数を使わずに一括で全角を半...
-
契約書や 公文書・私文書などに...
-
メールアドレスの上ハイフン入...
-
EXCELで、セル内の半角カ...
-
エクセル関数で文字列の中のス...
-
お名前(姓)」には「カタカナ(...
-
半角の漢字の入力方法
-
EXCELの文字列操作で文字数不足...
-
ギリシャ文字 μの出し方
-
EXCEL95 VLOOKUP関数で半角と全角
-
ワードで論文を書こうと思うの...
-
エクセルでひらがな・漢字はそ...
-
ネームランドで二桁数字を打つには
-
ビジネスの文書における、数字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テプラは半角数字が使えますか?
-
契約書や 公文書・私文書などに...
-
メールアドレスの上ハイフン入...
-
半角スペース
-
半角の『°(単位の度)』
-
半角の×(かける)は?
-
℃の半角表示
-
EXCELの文字列操作で文字数不足...
-
EXCEL95 VLOOKUP関数で半角と全角
-
関数を使わずに一括で全角を半...
-
エクセル関数で文字列の中のス...
-
【VBA】ファイルパスに半角スペ...
-
半角の漢字の入力方法
-
EXCELで、セル内の半角カ...
-
Excel 文字列の中から数字だけ...
-
ビジネスの文書における、数字...
-
1, (1),(1)の使い分け
-
Excel2016 検索の窓を常時表示...
-
Excel セル内の文字と数字をわ...
-
エクセルで、JIS関数、ASC関数...
おすすめ情報