- 締切済み
エクセルでセル内の数値の取得(タイトル拝借)
emaxemaxさんの http://okwave.jp/qa/q9671491.html?f=mail_favorite_new に類似した質問をさせていただきます。 添付図を参照ください。 A列の、文字&数字、あるいは、数字&文字からなるテキストをB列に示す数値に変換する数式を教えてください。 特に期待するのは5、11行目の実現です。 その他の行も含めて、マクロを使わずに、条件付き書式を含む上段(あるいは下段)共通の数式を教えてください。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
前の質問でも正規表現という、やり方で回答したので、本問にも目が留まり、やってみた。VBAをやらない人にはむつかしかろうと思うが、読者には、いろいろいると思うので、参考に挙げてみます。 例データ 元データA列。実行結果B列同行。 東京124 124 出雲346 346 ハンナジョウ45123 45123 滋賀456-A 滋賀457-A789 457 313東京 313 ASS325 325 19tokyo東京2000 19 2020東京200回戦 2020 ーーー 標準モジュールに Sub test04() Dim RE Dim myStr As String Dim match, matches Set RE = CreateObject("VBScript.RegExp") With RE .Pattern = "[0-9,.]+" .Global = False endrw = Range("A100000").End(xlUp).Row For i = 1 To endrw x = Cells(i, "A") Set matches = .Execute(x) myStr = "" For Each match In matches myStr = myStr & match.Value Next 'MsgBox myStr Cells(i, "B") = myStr Next i End With Set RE = Nothing End Sub 参考にした記事 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_cell_suuji.html コード例B
- nishi6
- ベストアンサー率67% (869/1280)
質問では「文字」となっていて、 「全角文字」、「半角文字」の指定が明確でなく、 「全角数字」は「文字」なのか「数字」かの指定も明確でないので迷いました。 文字は、「全角文字」、「半角文字」両方混在して、 「全角数字」は「文字」としての算式です。 =MID(A2,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A2&1234567890)),LEN(A2)*10-SUM(LEN(SUBSTITUTE(A2,{0,1,2,3,4,5,6,7,8,9},))))
お礼
ご回答、ありがとうございました。 B列は文字列でなく、冒頭(左端)の 0 を“表示”させる数値のつもりでした。
- aokii
- ベストアンサー率23% (5210/22062)
A1セルから数字取得 =MID(A1,MIN(SEARCH({1,2,3,4,5,6,7,8,9,0},A1&1234567890)),LEN(A1)-(LENB(A1)-LEN(A1)))
お礼
ご回答、ありがとうございました。 実は、A列の「文字&数字」の「数字」とB列の「数値」には意味の違いを含めたつもりでした。 nishi6さんの式の戻り値は「数値」でなく「文字列」を右揃えにしたものですよね。 数値にするには例えば「*1」を当該式の末尾に付加すればOKですが、その場合に冒頭の 0 を表示させるには書式設定が必要になります。 》 条件付き書式を含む上段(あるいは下段)共通の数式を教えてください。 は無理な注文だったのでしょうか?そうかも知れない、と思い始めましたが… ちなみに、上段の場合の私が考えた文字列を戻り値とする式は下記です。 =MID(A1,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&1234567890)),99)
補足
aokiiさん、 先ほど書いた[お礼コメント]中で貴方様のお名前を間違えて仕舞ったことを深くお詫び申し上げます。
お礼
》 VBAをやらない人にはむつかしかろうと思うが… 全く仰るとおりです。