人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

EXCELについて質問です。ある連続するセルにA12345 B67890 C12345D 12345678E 123.456F 1234ABCD と文字列が入力してあるとします。 これらのセル内文字列から関数を使用して数値だけを抜き出す方法を教えてください。 カンマや、アルファベット以外の1や2等の数値だけです。数値は別セルで文字列としてではなく、数値として使用する必要があります。できませんなどの回答は不要です。データの量は数百ありますので、数値を手入力するのは避けたいです。

●質問者: els
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:Excel アルファベット セル データ 入力
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● garyo
●15ポイント

http://d.hatena.ne.jp/garyo/20041006#1096994915

2004-10-06 - ジャンク☆ニュース 臥龍

マクロで関数を作って見ました。

URL先を参照願います。

◎質問者からの返答

ありがとうございます。

やはりマクロを使うしかないのでしょうか・・・


2 ● h_kiku
●15ポイント

http://www.hatena.ne.jp/1096992387#

EXCELについて質問です。ある連続するセルにA12345 B67890 C12345D 12345678E 123.456F 1234ABCD と文字列が入力してあるとします。 これらのセル内文字列から関数を.. - 人力検索はてな

EXCELだけでやるのであれば、横に4つセルを付け加えればできると思います。A1にその値が入っていると仮定して、

《1つめ:B1》

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(UPPER(A1),”A”,),”B”,),”C”,),”D”,),”E”,),”F”,),”G”,)

《2つめ:C1》

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B1,”H”,),”I”,),”J”,),”K”,),”L”,),”M”,),”N”,),”O”,)

《3つめ:D1》

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(C1,”P”,),”Q”,),”R”,),”S”,),”T”,),”U”,),”V”,),”W”,)

《4つめ:E1》

=VALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(D1,”X”,),”Y”,),”Z”,),”,”,),”.”,),” ”,),”-”,))

◎質問者からの返答

ありがとうございます。

もしかしてこれってひとつのセルに文字列が入力されている場合でしょうか??


3 ● teatime_miki
●30ポイント

http://www.infoseek.co.jp/

楽天が運営するポータルサイト : 【インフォシーク】Infoseek

部分的に不明な点があるので、以下のように推測させていただきました。

・A12345→12345、123.456F→123456のように、数字以外を取り除く(ドットを小数点と見るかどうかわからなかったので、数値限定という形で文意をとらせてもらいました。)

この点については違う場合、この回答に関するポイントは不要ですが、コメントで詳細を教えてください。(再度回答を考えてみたいと思います。)

まず、A列にデータが入ってる場合、B列に下の関数を入れてください。

------------

=VALUE(IF(ISNUMBER(VALUE(MID(A1,1,1))),MID(A1,1,1),””)&IF(ISNUMBER(VALUE(MID(A1,2,1))),MID(A1,2,1),””)&IF(ISNUMBER(VALUE(MID(A1,3,1))),MID(A1,3,1),””)&IF(ISNUMBER(VALUE(MID(A1,4,1))),MID(A1,4,1),””)&IF(ISNUMBER(VALUE(MID(A1,5,1))),MID(A1,5,1),””)&IF(ISNUMBER(VALUE(MID(A1,6,1))),MID(A1,6,1),””)&IF(ISNUMBER(VALUE(MID(A1,7,1))),MID(A1,7,1),””)&IF(ISNUMBER(VALUE(MID(A1,8,1))),MID(A1,8,1),””)&IF(ISNUMBER(VALUE(MID(A1,9,1))),MID(A1,9,1),””)&IF(ISNUMBER(VALUE(MID(A1,10,1))),MID(A1,10,1),””))

-------------

この関数はセルに入力された文字列を1文字ずつ数字かどうかチェックして、数字なら表示するという関数になります。

また、セル内の文字列は10文字以内と仮定して作っていますので、10文字以上の場合、修正する必要があります。

連続するセルに入っているということですから、コピーして張り付けたあとは、オートフィルで、関数をコピーしてください。

◎質問者からの返答

ありがとうございます!

この方法で数値のみを抜き出すことができました!

”.”を小数点とする場合の方法もありましたらお願いします!


4 ● hideawayjp
●15ポイント

http://www.hi-ho.ne.jp/babaq/

Baba Centerfolds

Perl5互換の正規表現エンジン。

自分はPerlをある程度知ってたからですが

上記DLLを使って似たようなことをVBAからやらせています。

http://www.hi-ho.ne.jp/babaq/basp21.html

BASP21 DLL

より、ファイルをDLしてInstall。

VBAにて

Dim fs , Text , Out

Set fs = CreateObject(”basp21”)

’Loop

Text = activecell.value

Out = fs.Replace(”s/[a-zA-Z]//g”, Text) ’又はTrを使用

’計算したいときはここの行でOutを計算させる。

activecell.value = Out

’Loop

’上記Loop部分をDo Loopなりを使って、activeCell.offset(1,0).select等で移動。

◎質問者からの返答

うーん、すみません、VBAはつかったことがありませんので、今回は関数のみでやりたいと思います・・・。


5 ● EddyYamanaka
●15ポイント

http://www.hatena.ne.jp/

はてな

整数用です。

Public Function ValEx(sVal As String) As Long

Dim sOne As String

ValEx = 0

While Len(sVal)

sOne = Left$(sVal, 1)

sVal = Mid$(sVal, 2)

If Val(sOne + ”1”) Then

If sOne <> ”.” Then

ValEx = ValEx * 10 + Val(sOne)

End If

End If

Wend

End Function

http://www.hatena.ne.jp/

はてな

実数用です。

Public Function ValExP(sVal As String)

Dim fPeriod As Boolean

Dim vSub

Dim sOne As String

fPeriod = False

vSub = 1

ValExP = 0

While Len(sVal)

sOne = Left$(sVal, 1)

sVal = Mid$(sVal, 2)

If Val(sOne + ”1”) Then

If sOne = ”.” Then

fPeriod = True

Else

If fPeriod Then

vSub = vSub / 10

ValExP = ValExP + Val(sOne) * vSub

Else

ValExP = ValExP * 10 + Val(sOne)

End If

End If

End If

Wend

End Function

◎質問者からの返答

ありがとうございます。

何がなんだかわからなくなってきました^^;


1-5件表示/7件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ