アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルのセル内から数字だけを抽出する方法を教えて下さい
ある列には文字+数値OR数式が入っています。
その数式(数字)だけを取り出して別の列に移すマクロを教えて下さい

■■■◯.◯x◯
■■■■◯.◯+◯.◯
■■◯.◯ * ◯.◯
■■■■◯ + ◯.◯
■■■■◯.◯

※ "■""スペース"を削除した部分の式が欲しいです。
※ 四則演算の前後にスペースが入っている場合もあります。
※ Function *****(rng As Range) で出来れば助かります。

どうぞよろしくお願いします

A 回答 (4件)

遅れ馳せですが、、、



>ある列には文字+数値OR数式が入っています
文字列の後に計算式又は数値というパターン以外は無いと考えてokですか?

>"■""スペース"を削除した部分の式が欲しいです。
スペースは半角のみと考えて良いですか?
半角と全角混在の場合はご自分で対応してください。

>四則演算の前後にスペースが入っている場合もあります
演算子の前後という理解で合っていますか?

>Function *****(rng As Range) で出来れば助かります
Function化もご自分で対応してください。

(例1)
Dim s As String
Dim i As Long

With Activecell
For i = 1 To Len(.Value)
If IsNumeric(.Characters(i, 1).text) = True Then
s = Right(.Value, Len(.Value) - (i - 1))
Exit For
End If
Next i
End With
MsgBox Replace(s, " ", "")

(例2)
Dim s As String
Dim i As Long

With Activecell
For i = 1 To Len(.Value)
If .Characters(i, 1).text Like "[0-90-9]" Then
s = Right(.Value, Len(.Value) - (i - 1))
Exit For
End If
Next i
End With
MsgBox Replace(s, " ", "")
    • good
    • 0

No.2です。



>スペースの削除は上手く出来ましたが、
>小数点以下+四則演算の符号が上手く出来ませんでした。
>■■■◯.●x▲ ⇒ ◯.

とありますが、
具体的なデータ(元データを上手くできなかったデータ)のサンプルを提示してもらえれば
原因が判るかもしれません。m(_ _)m
    • good
    • 0

こんばんは!


>ある列には文字+数値OR数式が入っています。

>※ Function *****(rng As Range) で出来れば助かります。
というコトですので、一例です。

四則計算限定としています。

Function keisan(myRng As Range)
Dim k As Long, str As String, buf As String
For k = 1 To Len(myRng)
str = Mid(StrConv(myRng, vbNarrow), k, 1)
If str Like "[0-9,.,=,+,*,/,×,÷,-]" Then
buf = buf & str
End If
Next k
keisan = buf
End Function

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

tom04 様

回答頂き有難うございました。

スペースの削除は上手く出来ましたが、
小数点以下+四則演算の符号が上手く出来ませんでした。
■■■◯.●x▲ ⇒ ◯.

お時間を頂き有難うございました。

お礼日時:2015/04/26 09:13

WorksheetFunction で、ワークシート関数のTrimを使って前後スペース削除、でできませんか?

    • good
    • 0
この回答へのお礼

zongai 様

有難うございます。
スペースと文字削除をして
数式のみ残すマクロが希望でした。

Trim 関数、知らなかったので勉強になりました。
有難うございました。

お礼日時:2015/04/26 09:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!