• ベストアンサー

エクセル 「1000万円」の1000(数字)部分だけ取り出したい2。

先日、以下の質問に対して、 エクセルで、A列に 1000万円 10円 100百万円 とあり、A列の数字部分をB列に取り出したいです。 1000 10 100 という感じにできないでしょうか? =LOOKUP(9^9,LEFT(A1,COLUMN(1:1))*1) という回答を頂き、今度はこれをマクロで記述したいのです。 Cells(1,2) = WorksheetFunction.Lookup(9^9, Left(Cells(1,1), 「COLUMN(1:1)」)* 1) の「COLUMN(1:1)」の部分をどう書くのか教えていただきたいです。 配列について、参考になる書籍などあれば教えていただけるとうれしいです。 ちなみに自分が参考にしているのは「EXCEL 2003 VBA辞典」です。初心者の自分には参考になるのですが、配列に関してはあまり記述がないような気がしました。(見落とし?) すみませんがよろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

Val(Cells(1,1)) で数値部分だけを取り出せます。

noname#66230
質問者

お礼

すごく的確な回答ありがとうございました。 おかげで解決しました。 もっと勉強しないとだめですね(苦笑)

その他の回答 (2)

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

色んなやり方がありえると思う。 私の流儀。 Sub test01() s = Array("百万円", "万円", "円") '文字数の多いものを左に For i = 1 To 3 For j = 0 To 2 If Right(Cells(i, "A"), Len(s(j))) = s(j) Then Cells(i, "B") = Left(Cells(i, "A"), Len(Cells(i, "A")) - Len(s(j))) Exit For End If Next j Next i End Sub 例 10万円 10 23百万円 23 3円 3 ーー ただ回答で教えていただいた数式を直接VBAで使う(WorksheetFunction化)ことはしないでしょう(思いつかない)。

noname#66230
質問者

お礼

ありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 まあ、回答は出ているようですから、少し書かせていだたきます。 WorksheetFunction.Lookup(9^9, Left(Cells(1,1), COLUMN(1:1))* 1) COLUMN は、ワークシートの関数とは違いますから、それは取れませんね。 本来、VBAは、ワークシートとは別ものですから、配列数式をVBAに移植するのは難しいです。 >配列に関してはあまり記述がないような気がしました。(見落とし?) >「EXCEL 2003 VBA辞典」 このテクニックが出てくる本は、「上級」レベルの本しか出てきません。マクロ関数を使うためには、以下のようなテクニックが必要です。 Dim i As Integer Dim myArea As String Dim myAdd As String If Application.ReferenceStyle = 1 Then i = 1 Else i = 2 myAdd = Cells(1, 1).Address(, , i) myArea = Rows(1).Address(, , i) Cells(1, 2).Value = Evaluate("=LOOKUP(9^9, LEFT(" & myAdd & ",COLUMN(" & myArea & "))*1)") これは、  1,000万円 でも、1000を導きだします。

noname#66230
質問者

お礼

ありがとうございます。 参考にさせていただきます。 >本来、VBAは、ワークシートとは別ものですから、配列数式をVBAに移植するのは難しいです。 基本的な概念も知らず、試行錯誤でやってるもので苦労します。。。

関連するQ&A