
セル内(C3)にある文字列に、漢字・ひらがな・全角カタカナ・半角カタカナのうち、1個でもあれば、その文字列すべてを、右隣のセル(C4)に移し、それ以外の場合はさらにその右隣(C5)に移したいのですが、
たとえば、
(C3)「AMERICA/JAPAN」の場合は、(C5)に「AMERICA/JAPAN」と移します。
(C3)「AMERICA/Japan」の場合は、(C5)に「AMERICA/Japan」と移します。
(C3)「AMERICA/JAPAN#$%?<>」の場合は、(C5)に「AMERICA/JAPAN#$%?<>」と移します。
しかし
(C3)「日本とアメリカ#$%?<>」の場合は、(C4)に「日本とアメリカ#$%?<>」と移します。
(C3)「日本/america」の場合は、(C4)に「日本/america」と移します。
(C3)「日本/アメリカ」の場合は、(C4)に「日本/アメリカ」と移します。
(C3)「Japanとamerica」の場合は、(C4)に「Japanとamerica」と移します。
VBAで処理する場合、文字コード、Chr関数、Mid関数を使えばいいと思ってプログラムを組むところです。
ところが、漢字のコード番号が何番から何番までか、よくわかりません。カタカナ・ひらがなは調べられます。
正確でなくとも<>=の数値処理の範囲指定ですので、漢字コードの範囲を教えてくださいませんか。
また、この処理目的のために、よりシンプルなプログラムがありましたら教えてくださいませんか。
よろしくお願いします。
※簡単に言いますと、セル内が日本語の文章か英語の文章かを識別する作業です。
No.5ベストアンサー
- 回答日時:
日本語かどうかの判定関数です。
引数の中身が日本語ならTrueをそれ以外ならFalseを返します。
------------------
Function IsJapan(Arg As String) As Boolean
IsJapan = Not (LenB(StrConv(StrConv(StrConv(StrConv(Arg, vbWide), vbHiragana), vbNarrow), vbFromUnicode)) = Len(Arg))
End Function

No.4
- 回答日時:
#1です。
文字列として"ABC"と"いろは"とあるとします。
JIS関数で全角変換をすると
"ABC"→"ABC"
"いろは"→"いろは"
この変換後の文字列数をLENB関数で数えると(文字数をバイト単位で数える)
"ABC"→6文字
"いろは"→6文字
となります。
ASC関数で半角変換をすると
"ABC"→"ABC"
"いろは"→"いろは"
この変換後の文字列数を同じくLENB関数で数えると
"ABC"→3文字
"いろは"→6文字
ここで JIS関数で変換した文字数=ASC関数で変換した文字数*2 だったら英語、イコールでなければ日本語が混じっていると判断しています。
ただ、ここで書いていて気づいたのですがカタカナは半角カタカナがあるためうまくいきませんね。「漢字・ひらがなが1個でも」という条件にしか適合しません。申し訳ありません。
(例題はカタカナと一緒に漢字またはひらがながあったためたまたまうまくいっていました)
もう一件追加の質問は、その質問のリンク先か質問Noがあるとありがたいです...
No.3
- 回答日時:
こんにちは。
以下は、Web サイトの自動変換機能で、全角になっていますから、以下の部分だけ半角に変換をしてください。
Function FindJapanese(Text As String) の中の
→ If Text Like "*[ヲ-゜]*" Or _
なお、一応、大ざっばに考えたものですから、細かいチェックはなされておりません。
'--------------------------------------------
Sub CheckCharMacro()
Dim c As Range
For Each c In Range("C3") 'Selection
If FindJapanese(c.Value) Then
c.Offset(1).Value = c.Value '入っている
Else
c.Offset(2).Value = c.Value '入っていない
End If
Next c
End Sub
Function FindJapanese(Text As String)
'漢字・ひらがな・全角カタカナ・半角カタカナ
'注意 最初のカタカナは、半角に変更してください。
If Text Like "*[ヲ-゜]*" Or _
Text Like "*[ぁ-ヶ]*" Or _
Text Like "*[一-龠]*" Then
FindJapanese = True
Else
FindJapanese = False
End If
End Function
'--------------------------------------------
>漢字のコード番号が何番から何番までか、よくわかりません。
VBAならば、漢字コードは、Unicodeの範囲を指定すればよいのでは?
[&H4E00-&H9FA5]
一-龠(これ以上は、ShifJISにありません。4文字漢字が足りません。正確さを記すなら、Unicode入力をするか、コードで指定してください)正規表現でも可能です。その場合は、直接コードを指定すればよいです。
No.2
- 回答日時:
>漢字コードの範囲を教えてくださいませんか。
下記は、逆に「半角コード以外」が含まれるかで判断しています。
Sub sample()
Dim str As String
Dim i As Integer
Dim flg As Boolean
str = "japan/にほん"
For i = 1 To Len(str)
If AscB(Mid(str, i)) > 127 Or AscB(Mid(str, i)) < 32 Then
flg = True
Exit For
End If
Next
If flg Then
MsgBox "日本語が含まれています。"
Else
MsgBox "日本語は含まれていません。"
End If
End Sub

No.1
- 回答日時:
下記のような関数で例に挙げられている内容を満足できましたが、このようなものでも大丈夫でしょうか。
セルC4に =IF(LENB(JIS(C3))=LENB(ASC(C3))*2,C3,"")
セルC5に =IF(LENB(JIS(C3))<>LENB(ASC(C3))*2,C3,"")
内容としては元セルの文字列を全角変換したときの文字数(バイト単位)が元セルの文字列を半角変換した時の文字数*2の値だったら英語と判断するというものです。
全ての文字列で満足するかわかりませんが、参考に。
この回答への補足
関数処理出来るんですね。ほんとうに目からうろこです。少し、理論をご教授願いたいのですが。文字コードに関する知識が少し弱いものですから。・・・
それから、もう1件追加の質問も書きました。関連です。関数で処理できれば、有難いのですが、・・・。感謝。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 全角文字「ヴ」の半角文字「ヴ」への変換方法について 3 2022/11/05 12:07
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Excel(エクセル) EXCELでの文字・数字入力の基本について教えてください。 2 2023/05/29 23:17
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 16:55
- 日本語 漢字って、不便じゃないですか? 27 2022/12/06 17:44
- Excel(エクセル) エクセル関数について 2 2022/05/30 14:36
- Visual Basic(VBA) C3とC4のセルに、Visual basicで実行した時入力した値をC3に表示させ、その後に、C3に 1 2023/07/14 09:43
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルでアルファベットか数値の判定をしたいのですが
Excel(エクセル)
-
エクセルでセルの中身が漢字かどうか識別する方法は?
Excel(エクセル)
-
日本語(ひらがな・カタカナ・漢字)があるか判断する
Excel(エクセル)
-
-
4
文字列から英数字のみを抽出する関数
Excel(エクセル)
-
5
EXCELで、漢字のみ抽出する式を教えてください。
Excel(エクセル)
-
6
エクセルでセルのデータがカタカナかどうか調べたい
Excel(エクセル)
-
7
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
8
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
9
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
10
Excelでカタカナ・ひらがな・英数字の抽出
その他(Microsoft Office)
-
11
vba 日本語以外を抽出について
Excel(エクセル)
-
12
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
13
エクセルでアルファベットと日本語の文字列を分割する方法
Excel(エクセル)
-
14
Excelで重複データの件数ではなく、何番目かを求める方法
Excel(エクセル)
-
15
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
16
セルの中の文字判定の方法
Excel(エクセル)
-
17
Access_フィールドの文字列に日本語があるかを識別
Access(アクセス)
-
18
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
19
Excel上でどれが外字か調べたい
その他(コンピューター・テクノロジー)
-
20
エクセルで英数大文字のみの入力制限は可能ですか
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
ExcelVBA実行後に時々落ちる
-
std::stringからLPCWSTR型への変換
-
数字5桁文字コード?
-
COBOLによる全角・半角混...
-
Excelマクロにて30分単位の計算...
-
「彡」って文字はなんという文...
-
C#でバイナリデータをテキスト...
-
%fと%gについて
-
sedで日本語の置換方法について
-
ふりがなをアルファベット化す...
-
Excel vba で1と10を正確に判断...
-
PL/SQLでSJISの文字コードを取...
-
特殊記号
-
VB.NETのコンソールアプリケー...
-
ASCIIコードの文字化け??
-
VBでバイナリデータについて。
-
ホームページビルダーが勝手にU...
-
文字コード(たぶんユニコード)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
std::stringからLPCWSTR型への変換
-
「彡」って文字はなんという文...
-
ふりがなをアルファベット化す...
-
ExcelVBA実行後に時々落ちる
-
VS 2008(VB.NET)
-
COBOLによる全角・半角混...
-
数値のパック10進数の変換に...
-
Symfowareでのデータ型変換につ...
-
sedで日本語の置換方法について
-
2バイト文字をJEFからSJISに変...
-
フォームのコントロールのバッ...
-
JIS → S-JIS コード変換するには
-
英数字を含む文字列(0-9,A-Z)...
-
Excel vba で1と10を正確に判断...
-
Excelマクロにて30分単位の計算...
-
PL/SQLでSJISの文字コードを取...
-
S-JIS → JIS コード変換するには
-
%fと%gについて
おすすめ情報