マクロを使って、次の処理を行うマクロを作りたいのですが、
まず、漢字・ひらがな・カタカナ・数時・アルファベットを識別するコードの抽出方法と、コードの一覧がわかりません。
それから、文字列の処理の関数がなかなか思いつきません。
2年ほどマクロを使っていません。エクセルも2007になり、かなり勝手が違います。
できれば、マクロを示していただければありがたいのですが、
重要なヒントを示していただいても構いません。
-----------------------------------------------
セル(H、5)の中に、いろいろな文字列があります。
例えば、
「東京1月アメリカEUやまとChinaイギリス日本2009年おわり」
ですが、
これを
漢字をA列に1行から順に、
東京
月
日本
年
ひらがなをB列に1行から順に、
やまと
おわり
カタカナをC列に1行から順に、
アメリカ
イギリス
数字をD列に1行から順に、
1
2009
アルファベットをE列に1行から順に、
EU
China
というように出力するマクロを作りたいのです。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
こんにちは。
「東京1月アメリカEUやまとChinaイギリス日本2009年おわり」
この文には、助詞がありません。だから可能ですが、助詞の区分けをしなくてはならないとしたら、もっと複雑になりますが、本格的に行うなら、Perl を使ったり、VB系では、BREGEXP を使ったりします。
なお、VBEditor 内では、Unicode ですから、JISの並びとは違いますから、ややこしいです。以下を参考にしてみてください。
'---------------------------------------------
Sub Test1()
Dim mText As String
Dim objRe As Object
Dim Matches As Object
Dim Match As Object
Dim buf As String
Dim v As Variant
Dim i As Integer
Dim j As Integer
Dim Ar() As Variant
ReDim Ar(4, 0)
If Range("H5").Value <> "" Then
mText = Range("H5").Value
Else
Exit Sub '文字がない場合
End If
'漢字,ひらがな,半角カタカナ/全角カタカナ,数字、アルファベット
For Each v In Array("[一-龠]+", "[ぁ-ん]+", "[\uFF66-\uFF9Fァ-ヶ]+", "[\d0-9]+", "[A-zA-z]+")
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = v
If .Test(mText) Then
Set Matches = .Execute(mText)
For Each Match In Matches
If UBound(Ar, 2) < i Then
ReDim Preserve Ar(4, i)
End If
buf = Match.Value
If IsNumeric(buf) Then buf = "'" & buf
Ar(j, i) = buf
i = i + 1
Next
j = j + 1
i = 0
End If
End With
Next v
Range("A1").Resize(UBound(Ar, 2) + 1, UBound(Ar, 1) + 1).Value = _
Application.Transpose(Ar)
End Sub
No.1
- 回答日時:
エクセルであれば、
=CODE("A")→65
=CHAR(65)→A(半角のA)
=CODE("東京")→17772(先頭の文字を処理)
=CHAR(17772)→東
VBAであれば、ASC関数がCODE関数、CHR関数がCHAR関数と同じような機能みたいです。
私は使い慣れていない関数なので、実際に試してみると良いと思います。
以前マクロを使用されていたとの事ですので、詳しく書く必要もないと思いますが、
関数の性質上、一文字ずつ処理していけばできるでしょう。
参考までに私がエクセルのCODE関数で試したものです。
A~Z 65~90
a~z 97~122
A~Z 9025~9050(全角)
a~z 9057~9082(全角)
0~9 48~57
0~9 9008~9017(全角)
ぁ~ん 9249~9331
ァ~ン 9505~9587
亜 12321
腕 20307
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA B列にある前から10文字のみ表示 3 2023/08/07 11:24
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- Visual Basic(VBA) VBAでPowerPointからExcelにレイアウト通りに出力する 4 2023/07/05 12:22
- Excel(エクセル) エクセルのマクロを教えてください。 1 2022/03/30 09:29
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- Excel(エクセル) Excel 文字列を結合するときに重複をなくしたい 関数・VBA 2 2022/12/12 10:40
- Excel(エクセル) 【Excel】指定した文字列に該当する行を重複しないようにリスト 3 2022/03/30 12:27
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
メッセージボックスのOKボタ...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
一つのTeratermのマクロで複数...
-
ソース内の行末に\\
-
Excel VBAからAccessマクロを実...
-
EXCELのVBAでRange("A1:C4")を...
-
ExcelVBAでPDFを閉じるソース
-
エクセルVBAでNAVITIMEを使って...
-
Excelのマクロボタンをダブルク...
-
マクロの連続実行
-
マクロの連続印刷が突然不可能...
-
エクセルで別のセルにあるふり...
-
特定文字のある行の前に空白行...
-
エクセルに張り付けた写真のフ...
-
エクセルのマクロについて教え...
-
VBAにて別ワークブック上の実行...
-
エクセル マクロ 指定日の指定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
他人が作ったマクロの理解
-
ExcelVBAでPDFを閉じるソース
-
TERA TERMを隠す方法
-
エクセルで別のセルにあるふり...
-
マクロ実行時、ユーザーフォー...
-
Excel VBAからAccessマクロを実...
-
EXCELのVBAでRange("A1:C4")を...
-
TeraTermマクロの文字列結合
-
PDF出力マクロについて。マクロ...
-
#defineの定数を文字列として読...
-
エクセルのマクロをセルの値に...
-
wordを起動した際に特定のペー...
おすすめ情報