[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『文字列の最後が5桁の半角数字かを判定したい』(なん)
ある有名ショッピングモールでウェブショップを構えていますが、 顧客データをCSVでダウンロードすると、 県・市区町・番地が分かれているため、
「3-1-5」 のような数字の住所が、 日付データとして 「37626」のような5桁の数字に変換されてしまいます。
現在データ収容の関係上、この分かれた住所データを 関数とマクロで1つの文字列にまとめているのですが、 その住所から末尾が5桁に変換されてしまったものを目視で探し出し、 手作業で元に戻す作業をしています。
これではどうしても見逃してしまうことがありますので、 どうにかいい方法がないものかと考えています。
文字列の最後が5桁の半角数字かどうかを判定して、 「注意」などのアラートを出せれば、 見逃すことはなくなると思うのですが、 色々調べてみても、どうすれば良いのか計りかねています。
また、欲を言えば、判定した上で 元の数字に変換できないものかと考えていますが、 私にはすこしハードルが高すぎるかもしれません。
もし、何かいい方法をご存知の方がいらっしゃいましたら どうかお教えください。
ヒントや参考になるURL等でもありがたいです。
ずうずうしいですが、よろしくお願いいたします。
こんにちは。かみちゃん です。
> ヒントや参考になるURL等でもありがたいです。
以下は参考になりますでしょうか? [[20090321231136]]『テキストの頭4文字が半角数字であるか?』(shut)
(かみちゃん) 2009-03-27 16:05
元々データを読むときに文字列で読み込めばいいと思います。
CSVファイルをいきなりダブルクリックなどで開かず、 まずExcelを開いてから、外部データの取りこみをすれば、 該当の列を文字列で取り込む指定ができます。
ご参考になれば幸いです。 (sato)
こんにちは。かみちゃん です。
> 文字列の最後が5桁の半角数字かどうかを判定
さきほどの過去ログを元に、VBAでするならば、以下のような感じです。
Sub Sample() Dim ss As String
ss = "住所37626" MsgBox ss Like "*#####" 'True
ss = "住所0123" MsgBox ss Like "*#####" 'False End Sub
ただ、satoさんもおっしゃっているとおり、 > 元々データを読むときに文字列で読み込めばいいと思います。 は、賛成です。
CSVファイルをダブルクリックして、開くのは、便利ですが、余計な自動変換をしてくれるので、厄介ですね。
(かみちゃん) 2009-03-27 16:20
最初に教えていただいたURLから
=RIGHT(A1,5)=RIGHTB(A1,5) で、判定することができました。
せっかくVBAも教えていただきましたが、 あいにくそこまでのスキルがないため確認できませんでした。
ただ、お二方のおっしゃるとおり、 文字列で読み込むに越したことはありませんので、 そちらの方向でやってみたいと思います。 どうもありがとうございました。
お遊びで =IF(LEN(LOOKUP(10^10,RIGHT(A1,ROW(4:8))*1))=5,TEXT(RIGHT(A1,5),"y-m-d"))
IF(LEN(LOOKUP(10^10,RIGHT(A1,ROW(4:8))*1))=5,TEXT(RIGHT(A1,5),"y")*1&TEXT(RIGHT(A1,5),"-m-d"))
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.