![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
掲題の件ですがお力を貸していただけますと幸いです。
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
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_06.png?5a7ff87)
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ランキング
-
文字の入力で横バー上段、中断...
-
全角括弧と全角読点の間隔を狭...
-
半角数字かどうかの判定
-
特定の文字を簡単な操作で半角...
-
エクセルのCOUNTIFが正しくカウ...
-
メッセージボックスで1025文字...
-
文字列前後の「全角空白/半角空...
-
Excel関数「COUNTIF」で”文字”...
-
全角、半角文字の判別について
-
カタカナ判別
-
正規表現でIパスワードの作成内...
-
正規表現で全角ひらがなを判断
-
ファイルから読み込み
-
rawurlencodeとurlencodeの違い...
-
全角、半角、改行コードが混在...
-
全角半角変換 C++/CLI
-
エスケープ文字にstr_replaceが...
-
preg_matchで全角数字のみ許可...
-
PHPでMySQLに入力した半角スペ...
-
パソコンで全角、半角文字の切...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メッセージボックスで1025文字...
-
文字の入力で横バー上段、中断...
-
Excel関数「COUNTIF」で”文字”...
-
全角括弧と全角読点の間隔を狭...
-
エクセルのCOUNTIFが正しくカウ...
-
半角記号、全角記号を含む正規...
-
記号は半角と全角どちらがよい...
-
XMLのタグ名の禁則文字
-
エクセルでの漢字、カタカナ、...
-
Replace関数は文字数の制限ある...
-
VBAで英数字入力チェックしたい。
-
文字列中の両丸括弧を取り除くV...
-
特定の文字を簡単な操作で半角...
-
全角英数文字が嫌われる理由を...
-
全角半角変換 C++/CLI
-
VBScriptである文字列に半角文...
-
半角文字と全角文字の判別の仕方
-
2つ以上の連続する空白文字を除去
-
Excel2002 一桁数字だけ全角に置換
-
VB.net テキストボックス半角文...
おすすめ情報