• 締切済み

エクセルでセル内の数値の取得(タイトル拝借)

emaxemaxさんの http://okwave.jp/qa/q9671491.html?f=mail_favorite_new に類似した質問をさせていただきます。 添付図を参照ください。 A列の、文字&数字、あるいは、数字&文字からなるテキストをB列に示す数値に変換する数式を教えてください。 特に期待するのは5、11行目の実現です。 その他の行も含めて、マクロを使わずに、条件付き書式を含む上段(あるいは下段)共通の数式を教えてください。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

前の質問でも正規表現という、やり方で回答したので、本問にも目が留まり、やってみた。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

msMike
質問者

お礼

》 VBAをやらない人にはむつかしかろうと思うが… 全く仰るとおりです。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

質問では「文字」となっていて、 「全角文字」、「半角文字」の指定が明確でなく、 「全角数字」は「文字」なのか「数字」かの指定も明確でないので迷いました。 文字は、「全角文字」、「半角文字」両方混在して、 「全角数字」は「文字」としての算式です。 =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},))))

msMike
質問者

お礼

ご回答、ありがとうございました。 B列は文字列でなく、冒頭(左端)の 0 を“表示”させる数値のつもりでした。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

A1セルから数字取得 =MID(A1,MIN(SEARCH({1,2,3,4,5,6,7,8,9,0},A1&1234567890)),LEN(A1)-(LENB(A1)-LEN(A1)))

msMike
質問者

お礼

ご回答、ありがとうございました。 実は、A列の「文字&数字」の「数字」とB列の「数値」には意味の違いを含めたつもりでした。 nishi6さんの式の戻り値は「数値」でなく「文字列」を右揃えにしたものですよね。 数値にするには例えば「*1」を当該式の末尾に付加すればOKですが、その場合に冒頭の 0 を表示させるには書式設定が必要になります。 》 条件付き書式を含む上段(あるいは下段)共通の数式を教えてください。 は無理な注文だったのでしょうか?そうかも知れない、と思い始めましたが… ちなみに、上段の場合の私が考えた文字列を戻り値とする式は下記です。 =MID(A1,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&1234567890)),99)

msMike
質問者

補足

aokiiさん、 先ほど書いた[お礼コメント]中で貴方様のお名前を間違えて仕舞ったことを深くお詫び申し上げます。

関連するQ&A