タイトルのほかにも条件があるのですが、Excel2010で、表示結果に条件があります。
既存に入力されているものなんですが、条件は以下の通りです。
条件1:漢字あるいは、ひらがなはそのまま
条件2:全角カタカナは全角カタカナ
条件3:半角カタカナは全角カタカナ
条件4:全角英数字は半角英数字
条件5:半角英数字は半角英数字
条件6:全角スペースは全角スペース
条件7:半角スペースは全角スペース
条件8:スペースが連続している場合は全角スペース1つのみ
例としては(左側が既存、右側が表示結果)、
全角あいうえお→全角あいうえお
全角アイウエオ→全角アイウエオ
半角アイウエオ→半角アイウエオ
全角110→全角110
半角アイウエオ全角110→半角アイウエオ全角110
半角アイウエオ□全角110→半角アイウエオ□全角110
半角アイウエオ□□全角110→半角アイウエオ□全角110
半角アイウエオ△□全角110→半角アイウエオ□全角110
半角アイウエオ△全角110→半角アイウエオ□全角110
半角アイウエオ△△全角110→半角アイウエオ□全角110
半角アイウエオ△△△全角110→半角アイウエオ□全角110
※「□」は全角スペース、「△」は半角スペースです。分かりやすいように表記してみました。「□」または「△」が複数ある場合、スペースの個数です。
既存の入力されている列は「AE列」です。関数を入力できるのは「AR列」以降です。
関数について詳しくないため、あまり長いお礼はできませんが、回答よろしくお願いします。
No.3ベストアンサー
- 回答日時:
期待通りに動いてくれると良いのですが、
自前の関数を作成します。
下記の
Function myConv(ByVal myArg As String) As String
~中略~
End Function
までをコピーします。
Excelに戻って、Alt + F11 を押してVBEの画面にします。
Alt + i を押して、プルダウンから標準モジュールを選択します。
新たなウィンドウが出ますのでそこへ先ほどのコピーをペーストします。
Alt + F11 を押してExcelに戻ります。
AR列で =myconv(AE1)
等とすれば結果が返ります。
条件1~8と例として挙げられているのが矛盾しているようです。
条件の方で作成しています。
Function myConv(ByVal myArg As String) As String
Dim myReg As Object, myMC As Object, myM As Object
Set myReg = CreateObject("VBScript.RegExp")
'スペースを全角一個だけに
myConv = Replace(myArg, " ", " ", compare:=vbTextCompare)
With myReg
.Pattern = " +"
.Global = True
End With
myConv = myReg.Replace(myConv, " ")
'半角カタカナは全角カタカナ
With myReg
.Pattern = "[\uff66-\uff9f]+"
.Global = True
Set myMC = .Execute(myConv)
End With
For Each myM In myMC
myConv = Replace(myConv, myM.Value, StrConv(myM.Value, vbWide), compare:=vbTextCompare)
Next
'全角英数字は半角英数字
With myReg
.Pattern = "[0-9A-Za-z]+"
.Global = True
Set myMC = .Execute(myConv)
End With
For Each myM In myMC
myConv = Replace(myConv, myM.Value, StrConv(myM.Value, vbNarrow), compare:=vbTextCompare)
Next
Set myMC = Nothing: Set myReg = Nothing
End Function
回答ありがとうございます。
前者の通りVBAのことはほとんど分かりません。
なので、そのままコピーさせて試してみます。
あと、また関数ではなくVBAで新たに質問するかもしれませんがその時はよろしくお願いします。
ありがとうございました。
No.2
- 回答日時:
こんばんは。
関数に詳しくないとかなら、Wordで処理する方法もありかとは思います。
Wordの置換のワイルドカードを使います。
それが面倒なら、以下をVBEditor に貼り付けて一発変換という方法もあります。
正規表現を利用していますから、VBAでの処理が嫌なら、テキストエディタでも可能です。
数回の処理にはなるかと思いますが、基本的には、全角数字とスペースの統一です。
'//
Sub RegExpExchange()
Dim myRange As Range
Dim objReg As Object
Dim Matches As Object
Dim Match As Variant
Dim c As Range
Dim Dspc As String
Dspc = Chr(&H8140) '一般的な全角スペース
Application.ScreenUpdating = False
With ActiveSheet
'データはA列にあるとする
Set myRange = .Range("A1", .Cells(Rows.Count, 1).End(xlUp))
End With
Set objReg = CreateObject("VBScript.RegExp")
With objReg
For Each c In myRange
buf = c.Value
.Pattern = "[0-9]+"
.Global = True
If .Test(buf) Then
Set Matches = .Execute(buf)
For Each Match In Matches
buf = Replace(buf, Match, StrConv(Match, vbNarrow))
Next Match
End If
.Pattern = "[" & Dspc & Space(1) & "]+" '全角・半角スペース1つずつ入れる
.Global = True
If .Test(buf) Then
Set Matches = .Execute(buf)
For Each Match In Matches
buf = Replace(buf, Match, Dspc)
Next Match
End If
c.Offset(, 1).Value = buf
Next c
End With
Application.ScreenUpdating = True
Set objReg = Nothing
End Sub
回答ありがとうございます。
VBAですか。
VBAのことはちんぷんかんぷんなので、どのような処理をしているのか分かりません。
なので、どうお礼をしたらいいのか分かりませんがとりあえずありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- その他(Microsoft Office) 英数字のみ全角から半角に変換 4 2023/07/28 14:48
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
- Excel(エクセル) 【マクロ】フォルダを2つのモニターの定位置に並べたい 2 2022/09/02 01:14
- Excel(エクセル) EXCELでの文字・数字入力の基本について教えてください。 2 2023/05/29 23:17
- Excel(エクセル) 【マクロ】フォルダを3つ、POモニター上に、決まった並べ方をしたい 4 2022/08/31 11:05
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
大文字と全角文字は同じ意味で...
-
住宅にカナを入力する際に丁目...
-
全角英数字の必要性が理解できない
-
差し込み印刷について教えてく...
-
全角チルダと波ダッシュに関す...
-
ExcelVBA バイナリファイルの全...
-
全角入力
-
VBでのカナの自動入力方法について
-
全角スペース
-
掲示板で全角の英字はなぜいけ...
-
明細書の英数字の全角・半角に...
-
「 _ _ 」の正式名称を...
-
ACCESS:半角、全角空白スペース...
-
.NET3.5におけるキーボードの「...
-
LaTeXで半角カンマと全角カンマ...
-
splitでほしいものが消えてしま...
-
VBAで“ダブルクォート”の表示
-
エクセルにMicrosoft Barcode C...
-
全角英数字を半角英数字に変換...
-
word差し込み印刷 半角カタカ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
英数字のみ全角から半角に変換
-
VBA 文字に半角が含まれて...
-
エクセルにMicrosoft Barcode C...
-
全角英数字の必要性が理解できない
-
IEからEdgeへの移行に伴うIMEの...
-
住宅にカナを入力する際に丁目...
-
プログラミングでは、半角括弧...
-
COBOL・全角判定
-
VB.net、テキストボックス入力...
-
word差し込み印刷 半角カタカ...
-
全角入力
-
Accessのテキストボックスの入...
-
VBで、String型のデータが、...
-
char型全角数字から、int型半角...
-
よくアカウント等に使われる 半...
-
[VBScript]バイト長の判定
-
全角チルダと波ダッシュに関す...
-
封筒の宛先で縦書きの書き方
-
Accessでのグループ化で全角・...
-
CString Format にて全角空白文...
おすすめ情報