掲題の件ですがお力を貸していただけますと幸いです。
LENBを使って文字数をカウントしたいのですが、
海外購入パソコンのため全角認識がないのか、
ひらがなや漢字をいれても`1`とカウントしてしまいます。
きちんと半角は1、全角は2としてカウントさせたいのですが
何かいい方法はないでしょうか?
このエクセルファイルは人に提出して記入してもらうもののため
(提出先の人も海外購入パソコンを使用している可能性大)
PCのハード側をいじるのではなく、
エクセル内の関数などで解決したいです。。。
どうぞよろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
>ひらがなや漢字をいれても`1`とカウントしてしまいます。
VBAを使うしか手はないと思いますが……。
VBAでも、一般のコード、InstrConv で、Ascii に戻す、vbFromUnicode オプションが利きません。もともと、英語バージョンも、ローカルバージョンですから、たぶん、CODE関数でも取れないはずです。「1」と出ているのは、単に、ワークシート上で「?」になった文字を数えているだけだと思います。ちょうと、以前の#1のmike_gさんのご質問の裏返しのようなものではないでしょうか?
今回の質問は、時々、VBカテゴリなどで出る質問と同質だと思いますが、バイナリにして文字長を数えます。VBAは、本来、Unicodeだけですから、Unicodeの上位桁・下位桁のチェックをすればよいわけです。ワークシート関数では、そういうことは出来ないと思います。VBAは、禁止だとすれば、今回は無理だと思います。
'標準モジュールに貼り付けてください。
Public Function fLenB(arg As Variant)
Dim buf As String
Dim b() As Byte
Dim i As Long, cnt As Long
If TypeName(arg) = "Range" Then
buf = arg.Value
Else
buf = arg
End If
b = buf
For i = LBound(b) To UBound(b)
If b(i) > 0 Then
cnt = cnt + 1
End If
Next i
fLenB = cnt
End Function
No.2
- 回答日時:
LENB関数は日本語版限定の機能なので…
なのでやれる可能性があるとしたら、
1)LEFTあるいはRIGHT関数で端から1文字ずつ取り出す。
2)それをCODE関数に入れて文字コードを調べる。
3)CODE関数の戻り値が255以下だったら半角なので文字数+1,そうでなければ+2。
4)上記を全ての文字を調べるまで繰り返す。
という動作をするユーザー定義関数を作るくらいしか手がないんじゃないでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 中古パソコン 海外仕様のPC用アダプターは使えますか? 5 2023/06/24 18:48
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- Word(ワード) Windows11キーボードの調子が悪いので治し方を教えてください。 【症状】 1つ目 キーボードの 5 2022/07/03 14:51
- Excel(エクセル) エクセルでのデータの統一に関して リストを作成する際、元データをコピペでリストに転記しており、元デー 2 2022/08/31 15:33
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Excel(エクセル) EXCELでの文字・数字入力の基本について教えてください。 2 2023/05/29 23:17
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) 【Excel質問】 「本日の日付」から指定条件を満たす営業日経過後の日数を表示させる関数式 3 2022/06/06 23:28
- ノートパソコン ”IMEが無効です” というメッセージが出ます! 4 2023/05/02 09:56
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
半角記号、全角記号を含む正規...
-
メッセージボックスで1025文字...
-
エクセルのCOUNTIFが正しくカウ...
-
文字の入力で横バー上段、中断...
-
XMLのタグ名の禁則文字
-
全角半角変換 C++/CLI
-
秀丸を利用して、空白から空白...
-
Excel2002 一桁数字だけ全角に置換
-
全角英数字のみ半角英数字にす...
-
全角英数文字が嫌われる理由を...
-
文字列中の両丸括弧を取り除くV...
-
全て全角文字かチェックしたい
-
全角括弧と全角読点の間隔を狭...
-
FC2ホームページ 文字化けする。
-
Postgresの特定のカラムからス...
-
VBAのリストボックスでの文字化け
-
instr$関数による検索について。
-
電話番号だけでのe-mail
-
全角カタカナの正規表現
-
エクセルでの漢字、カタカナ、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メッセージボックスで1025文字...
-
文字の入力で横バー上段、中断...
-
Excel関数「COUNTIF」で”文字”...
-
全角括弧と全角読点の間隔を狭...
-
エクセルのCOUNTIFが正しくカウ...
-
半角記号、全角記号を含む正規...
-
記号は半角と全角どちらがよい...
-
XMLのタグ名の禁則文字
-
エクセルでの漢字、カタカナ、...
-
Replace関数は文字数の制限ある...
-
VBAで英数字入力チェックしたい。
-
文字列中の両丸括弧を取り除くV...
-
特定の文字を簡単な操作で半角...
-
全角英数文字が嫌われる理由を...
-
全角半角変換 C++/CLI
-
VBScriptである文字列に半角文...
-
半角文字と全角文字の判別の仕方
-
2つ以上の連続する空白文字を除去
-
Excel2002 一桁数字だけ全角に置換
-
VB.net テキストボックス半角文...
おすすめ情報