セル内(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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
エクセルでセルの中身が漢字かどうか識別する方法は?
Excel(エクセル)
-
エクセルでアルファベットか数値の判定をしたいのですが
Excel(エクセル)
-
日本語(ひらがな・カタカナ・漢字)があるか判断する
Excel(エクセル)
-
-
4
EXCELで、漢字のみ抽出する式を教えてください。
Excel(エクセル)
-
5
文字列から英数字のみを抽出する関数
Excel(エクセル)
-
6
エクセルでアルファベットと日本語の文字列を分割する方法
Excel(エクセル)
-
7
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
8
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
9
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
10
エクセルマクロで日本語を抽出して転記する方法
その他(Microsoft Office)
-
11
Excelでカタカナ・ひらがな・英数字の抽出
その他(Microsoft Office)
-
12
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
13
【Excel】文字列か数字か判断する関数ってありますか?
Excel(エクセル)
-
14
エクセルVBAのフォームを最前面にする方法を教えてください。
Visual Basic(VBA)
-
15
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
16
エクセルでセルのデータがカタカナかどうか調べたい
Excel(エクセル)
-
17
エクセル条件付書式について
Excel(エクセル)
-
18
【ExcelVBA】各セルをダブルクォーテーションで括ってCSV保存したい
Visual Basic(VBA)
-
19
VBAでの Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
-
20
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セル内の文字列が日本語か英語...
-
EBCDIC⇒SJIS変換の方法
-
「彡」って文字はなんという文...
-
ExcelVBA実行後に時々落ちる
-
VB.NETのコンソールアプリケー...
-
CString ←→ BSTRの変換について
-
sedで日本語の置換方法について
-
英数字を含む文字列(0-9,A-Z)...
-
error C2679 がとれません><
-
2バイト文字をJEFからSJISに変...
-
ImageMagickで透過以外を黒に
-
std::stringからLPCWSTR型への変換
-
latin-1 (ISO-8859-1)への変換
-
XMLデータの中の改行コードにつ...
-
COBOLによる全角・半角混...
-
VS 2008(VB.NET)
-
10進数→2進数への変換
-
VB.NET TextBoxへの入力をキャ...
-
C#でバイナリデータをテキスト...
-
byte配列の内容をstringにコピ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「彡」って文字はなんという文...
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
std::stringからLPCWSTR型への変換
-
ExcelVBA実行後に時々落ちる
-
VS 2008(VB.NET)
-
Symfowareでのデータ型変換につ...
-
2バイト文字をJEFからSJISに変...
-
COBOLによる全角・半角混...
-
VB.NETのコンソールアプリケー...
-
フォームのコントロールのバッ...
-
ふりがなをアルファベット化す...
-
sedで日本語の置換方法について
-
PL/SQLでSJISの文字コードを取...
-
数字5桁文字コード?
-
画像データ(png)をcsvファイル...
-
CString ←→ BSTRの変換について
-
英数字を含む文字列(0-9,A-Z)...
-
error C2679 がとれません><
-
RubyでUTF8のコード値を文字に...
おすすめ情報