- 締切済み
Accessの文字数を調べたい
住所項目で半角と全角の混ざった状態になっており、半角1文字は1として全角は1文字は2として合計文字数を算出したいのですが、良い方法を教え下さい。 例 ○○県☐☐市1-2-3 Len 11 LenB 22 求めたい値は、全角6文字×2 + 半角5文字×1 = 17
- akihiro451
- お礼率100% (3/3)
- その他(データベース)
- 回答数2
- ありがとう数5
- みんなの回答 (2)
- 専門家の回答
みんなの回答
No1さんの回答の通りです。 Access でも全く同じです。 Public Function LenH(ByVal Text As String) As Integer LenH = LenB(StrConv(Text, vbFromUnicode)) End Function [イミディエイト] ? LenH("○○県○○市1-2-3") 17
何かのプログラムから文字数を数えるんでしょうか?もしプログラムから調べる場合で言語がVisualBasicなら簡単に出来ます。 LenB(StrConv(字数を調べたい文字, vbFromUnicode)) 上記で全角は2、半角は1でカウント出来ます。例えば「果汁100%」と入れた場合は全角文字が3、半角が3なので9とカウントされます。他の言語は詳しくないので分かりません。
お礼
ありがとうございます。 試してみます。
関連するQ&A
- ACCESS2000の文字数制限について
ACCESS2000のテーブルで文字数制限をすると、全角でも半角でも 1文字と数えられてしまい、困っています。 全角は2文字、半角は1文字として数えたいのです。 モジュールを使い、LENB()、LEFTB()関数を使っても、上記と同様の現象で 解決しません。よい方法はありますでしょうか?
- ベストアンサー
- オフィス系ソフト
- Access2003 文字数の合計について
複数のフィールドに入力されている文字列(数値や文字)の文字数をカウントし, そのレコードごとの文字数合計を出したいのですが、「エラー」になってしまい うまくできないので、アドバイスを頂きたいと存じます。 ========================================================================= ☆1つのレコードA~Eのフィールドがあり、全角・半角の文字および英数字のデータが混在しています。 なお、データの入っていない空欄がところどころにあります。 [手順1] まず、フィールド内にある空白を除くためReplace関数を使って置換するため フィールドへ以下の式を入力します。 B1: Replace([B]," ", "") D1: Replace([D]," ", "") (例) [ID] [A] [B] [C] [D] [E] 1 東京都 港区 ○○1丁目 1-2-3 ●×マンション 101 ○○様方 2 神奈川県 横浜市○○○町 10-10 NULL NULL 3 千葉県 千葉市 ○○○町 NULL NULL ○○様方 ========================================================================= [手順2] 空白を取り除いたフィールドの文字数をカウントするためLen関数を使ってカウントするため フィールドへ以下の式を入力します。 文字数: Len('' & [A] & [B] & [C] & [D] & [E]) (例) [ID] [A] [B1] [C] [D1] [E] [文字数] 1 東京都 港区○○1丁目 1-2-3 ●×マンション101 ○○様方 29 2 神奈川県 横浜市○○○町 10-10 NULL NULL 16 3 千葉県 千葉市○○○町 NULL NULL ○○様方 14 ========================================================================= [手順1]~[手順2]を行い、文字数フィールドに合計値が表示されるようにしたいのですが、 [手順1]のクエリ実行でフィールド[D]の空欄に「#エラー」が表示されてしまい、 以下のとおり、[手順2]で文字数を出すことができませんでした。 (例) [ID] [A] [B1] [C] [D1] [E] [文字数] 1 東京都 港区○○1丁目 1-2-3 ●×マンション101 ○○様方 29 2 神奈川県 横浜市○○○町 10-10 #エラー #エラー #エラー 3 千葉県 千葉市○○○町 NULL #エラー ○○様方 #エラー ========================================================================= 上記のようなエラーを出さずに、文字数合計をしたいので、アドバイスをいただきたいと存知ます。 よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- Access2003複数フィールドの文字数合計
複数のフィールドに入力されている文字列(数値や文字)の文字数をカウントし、そのレコードごとの合計を1回の更新クエリで算出する方法があれば教えてください。 =========================================================== ☆1つのレコードにA~Eのフィールドがあり、全角・半角の文字および英数字のデータが混在しています。(データの入っていない場合は「null」となる) (例) No [A] [B] [C] [D] [E] 1 東京都 港区 ○○1丁目 1-2-3 ●×マンション101 2 神奈川県 横浜市 ○○○町 10-10 △△ビル10F 3 〃 〃 〃 〃 〃 =========================================================== (1) これらの各フィールドの文字数を「LEN関数」を使って、新たなフィールドF~Jに文字数を表示する (2) そして、上記のF~Jの文字数を「SUM関数」を使って、フィールドKへ合計数を表示しています。 (例) No [F] [G] [H] [I] [J] [K] 1 3 2 5 5 10 25 2 4 3 4 5 7 23 =========================================================== 現在は、上記のように、各フィールドの文字数を出してから合計数を計算していますが、 この合計数[K]の値を、フィールドF~Jを作成しなくても一度で計算できるような関数式があれば教えてください。 私は、SQLが書けないので、フィールド欄へ関数式を入力しておりますが、 関数だけでは出来ない場合は、SQLで教えていただければ幸いでございます。 お手数お掛けしますが、宜しくお願い致します。
- ベストアンサー
- その他MS Office製品
- エクセル:文字列のバイト数が欲しい
セルB1に、 半角スペース、全角2文字、半角スペース、 と入力しました。 このシートの別のセルに、 =Len(B1)と入力すると4と表示され、 =LenB(B1)と入力すると6と表示されますので、 間違いなく「半角スペース・全角2文字・半角スペース」がB1に入っているはずです。 このシートのコードに、 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$L$1" Then MsgBox LenB(Cells(1, 2).Value) End If End Sub と打ちました。 ここでシート上のセルL1に何か入力するとメッセージボックスが出るのですが、 メッセージボックスに出る値は8です。 何が原因でしょうか。 6が表示されて欲しいのですが(文字列のバイト数が欲しい)、 どのようにコードを書けばよいでしょうか。 実際にB1に入れていた文字は、 1B です。 (半角スペース・全角数字1・全角英字B・半角スペース)
- 締切済み
- オフィス系ソフト
- セル内の文字で半角2文字で1文字とカウントしたい
openofficeを利用しています。 セル内の全角と半角が混じった文章から半角2文字で1文字とカウント 全角はそのまま1文字とカウント して文字数を数えることはできますでしょうか? LENBが利用できないので困っています。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 半角/全角文字混在データの分割方法
VB6.0にて、あるデータ項目の内容を、画面上の2つの表示領域に分割して セットする方法を教えて下さい。 あるファイルの項目として、「住所」という項目があるとします。 このデータを取得し、画面に表示する際に、「住所1」「住所2」とに分割して、 セットします。 この場合、ファイル上の「住所」は、キャラクタタイプで40バイトと定義されており、 ”半角/全角文字混在”でデータが格納されています。 画面上の、「住所1」「住所2」はそれぞれ、20バイトとします。 この様な条件で、単純に取得したデータを2分割すると、 取得したデータが、全て半角か全角なら問題はないのですが、 例えば、1文字目が半角で、以降が全て全角文字だった場合に、 最後の全角文字がぴったり収まらなくなり、うまく表示できないように思います。 また、文字を取得する際に、使用している、Mid(MidB)関数やLen(LenB)関数も、 うまく利用できていないようです。(コード体系の違いでしょうか?) どなたかご教授下さい。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- Excelで22バイトの文字を数えたい
Excel2002です。 VBAでセルの文字列を取得する時に全角制御文字(2バイト)を含めて22バイトの制限を考慮したいのですがその方法がわかりません。 全角文字だけなら10文字、 半角文字だけなら22文字の取得ができます。 その後の作業の都合上、22バイトを基準に条件判断したいのですが現在はその方法がわからないためLEN()で10を上限としています。LENB()でも同じ結果(文字数が返される)になります。 対象のセルには全角文字/半角文字が混在しており、全角-半角-全角-半角のような混在であれば制御文字を2回考慮する必要があります。 最悪その文字が全角か半角かの区別がつけば対応できると思います。 よい方法をご教授いただきたくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- 全角・半角混在の文字列から半角文字のみ取り出す
エクセル勉強中です。問題集で理解できないところがあります。 数式がどういう意味をもつのか教えて頂けるとありがたいです。 よろしくお願いします。 画像添付の問題になります。 A列に製品名が入っています。(製品番号:半角文字)(製品名:全角文字) B列に半角文字の製品番号だけを取り出しなさいというものです。 半角文字の開始位置がバラバラになっているところが問題のポイントになっています。 回答ですが B2: =MID(A2,MATCH(1,INDEX(LENB(MID(A2,COLUMN(2:2),1))*1,0),),LEN(A2)*2-LENB(A2)) こちらで半角文字のみ取り出せるようです。回答には数式のみで何故この関数を使うのか? 使うことでどういった結果を導くなどの解説が一切ありません。(ちなみに出版会社の便利技的な問題集です) MID関数で製品名A2から開始位置を指定して、全角半角をLEN関数LENB関数で半角文字数を 算出して文字列を抽出するという事は理解できます。 ただ、この開始位置の指定の所が理解できません。 数式を分割してみましたが =MID(A2,COLUMN(2:2),1)の所はどの行も製品名の1文字目ですよね・・・ その値にLENB関数で文字数? 数式の検証で見てみると配列のような結果が次々と現れて・・・ MATCH関数もありますしINDEX関数が何か関係しているような気はしているのですが、 INDEX関数と言えば配列に行番号・列番号と例えば表の該当するセルの位置抽出の 知識しかありません。一つのセルでINDEX関数? すいません。独学で勉強していてこの程度の知識ですが、この数式の考え方教えてくださる方よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- エクエル/ASCで半角化すると文字数が増える!?
エクセル200です。 全角カタカナで濁点や半濁点があるものをASC関数で半角化すると、文字数が増えます!? たとえば =LEN("パパ") は2を返しますが、=LEN(ASC("パパ")) は4を返します。 なぜなの?
- ベストアンサー
- オフィス系ソフト
お礼
ありがとうございます。 試してみます。