
エクセルでのデータの統一に関して
リストを作成する際、元データをコピペでリストに転記しており、元データの提供者が全角や半角、氏名の間にも全角半角のスペースなど混在しており、データ管理が煩雑化しております。
転記する際に確認して実施をすれば問題はございませんが、目視ですと見落としの可能性もございますし、非効率とおもいます。
つきましては、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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【初月無料キャンペーン実施中】オンライン健康相談gooドクター
24時間365日いつでも医師に健康相談できる!詳しくはコチラ>>
-
excelの数式の書き方について。 以下のような数式をSheet1に書いています。 Sheet1のB
Excel(エクセル)
-
Countifよりも早く重複数をカウントする方法ありますか?
Excel(エクセル)
-
エクセルデーターの並び替え
Excel(エクセル)
-
4
【EXCEL】=セル&セルが上手く表示できない。
Excel(エクセル)
-
5
エクセルのデータの抽出について
Excel(エクセル)
-
6
Excelで文字列にランダムに記号を入れる事は出来ますか⁇Excelで作っている名簿リストをプリント
Excel(エクセル)
-
7
エクセルで割り振りをする方法
Excel(エクセル)
-
8
Excel関数 情報引用する方法
Excel(エクセル)
-
9
excel関数部分一致について教えてください。
Excel(エクセル)
-
10
Formulaプロパティーを使ってセルに数式を組んだのですが簡潔にしたい。
Excel(エクセル)
-
11
Excel Powerクエリーの質問、行数指定は可能でしょうか?
Excel(エクセル)
-
12
IFERROR、SMALL関数について
Excel(エクセル)
-
13
ある文字を含む際に、値を返す数式についてです
Excel(エクセル)
-
14
エクセルで名前の定義で使える文字
Excel(エクセル)
-
15
Excel 2019で質問があります。 計測器のデータをExcelで記録したんですが、1秒刻みで記録
Excel(エクセル)
-
16
Excel 画像のドラッグ&ドロップ 仕様変更はいつから
Excel(エクセル)
-
17
エクセルカレンダーに予定表を反映したいです。
Excel(エクセル)
-
18
マクロか関数で処理したいのですが、教えて頂けませんか。
Excel(エクセル)
-
19
2列のエクセルの表を変更したい
Excel(エクセル)
-
20
2列のエクセルの表を変更したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
EXCEL95 VLOOKUP関数で半角と全角
-
5
半角の『°(単位の度)』
-
6
半角の×(かける)は?
-
7
EXCELの文字列操作で文字数不足...
-
8
契約書や 公文書・私文書などに...
-
9
ビジネスの文書における、数字...
-
10
℃の半角表示
-
11
Excel 文字列の中から数字だけ...
-
12
Excel2016 検索の窓を常時表示...
-
13
ダブルクォーテーション・マー...
-
14
【VBA】ファイルパスに半角スペ...
-
15
半角スペース
-
16
EXCELで、セル内の半角カ...
-
17
ギリシャ文字 μの出し方
-
18
ネームランドで二桁数字を打つには
-
19
アッパーバー
-
20
エクセルで、JIS関数、ASC関数...
おすすめ情報
公式facebook
公式twitter