タイトルのほかにも条件があるのですが、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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
英数字のみ全角から半角に変換
-
住宅にカナを入力する際に丁目...
-
word差し込み印刷 半角カタカ...
-
COBOL・全角判定
-
Accessでのグループ化で全角・...
-
半角/全角文字混在データの分...
-
プログラミングでは、半角括弧...
-
エクセルにMicrosoft Barcode C...
-
エクセルでの”々”の扱い
-
IEからEdgeへの移行に伴うIMEの...
-
ダブルコーテーションの置換
-
いまスマホからカードの申込み...
-
全角/半角キーをSendkeys関数で...
-
半角カナを全角カナに変換したい
-
LaTeXで半角カンマと全角カンマ...
-
.NET3.5におけるキーボードの「...
-
全角英数字を半角英数字に変換...
-
COBOLでの全角文字の判定をした...
-
半角の数値を全角に変換
-
char型全角数字から、int型半角...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
英数字のみ全角から半角に変換
-
住宅にカナを入力する際に丁目...
-
VBA 文字に半角が含まれて...
-
COBOL・全角判定
-
エクセルにMicrosoft Barcode C...
-
プログラミングでは、半角括弧...
-
IEからEdgeへの移行に伴うIMEの...
-
word差し込み印刷 半角カタカ...
-
全角英数字の必要性が理解できない
-
封筒の宛先で縦書きの書き方
-
メモ帳の段落の揃え方
-
エクセルの検索が正しくできな...
-
ダブルコーテーションの置換
-
VB.net、テキストボックス入力...
-
CString Format にて全角空白文...
-
.NET3.5におけるキーボードの「...
-
エクセルでの”々”の扱い
-
VBで、String型のデータが、...
-
「一角」って何でしょうか
-
コマンドプロンプト 全角を含ん...
おすすめ情報