Excelの文字列から数値を抽出する


0

私は次のようなExcelの列を持っています:

Census Tract 2941.10 (part), Carson city, Compton CCD, Los Angeles County, California
Census Tract 5410.02, Carson city, Compton CCD, Los Angeles County, California
Census Tract 5431 (part), Carson city, Compton CCD, Los Angeles County, California
Census Tract 5432.02 (part), Carson city, Compton CCD, Los Angeles County, California
Census Tract 5433.04, Carson city, Compton CCD, Los Angeles County, California

2941.10、5410.02、5431などを抽出する必要があります。次の式を試しました。 =MID(E4,MATCH(TRUE,ISNUMBER(1*MID(E4,ROW($3:$606),1)),0),COUNT(1*MID(E4,ROW($3:$606),1)))

ただし、数字の中央にある小数は、最後の2つの数字が切り捨てられるようにします。すべての数値に小数があるわけではなく、数値の後のテキストの量は行ごとに異なります(したがって、左右の数式はオプションではありません)。VBA /マクロではなく、Excelの式を使用する必要があります。

助言がありますか?


「列へのテキスト」を使用
ハンヌ

回答:


2

これを使って:

=--TRIM(SUBSTITUTE(MID(SUBSTITUTE(A1," ",REPT(" ",999)),2*999,999),",",""))

ここに画像の説明を入力してください


上記の式は、数字が常にテキストの3番目の「単語」であることを前提としています。それがない場合、文字列あたり数の唯一つのグループがあり、この配列数式を使用することができます。

=SUM(IFERROR(--TRIM(SUBSTITUTE(MID(SUBSTITUTE(A1," ",REPT(" ",999)),(ROW(INDIRECT("1:" & LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))-1)*999+1,999),",","")),0))

配列式であるため、編集モードを終了するときにEnterではなくCtrl-Shift-Enterで確認する必要があります。正しく行われた場合、Excelは{}式を囲みます。

単語を反復処理し、すべての数値グループの合計を返します。数値グループは1つしかないため、それだけを返します。

ここに画像の説明を入力してください


0

編集: おそらく先頭または末尾の0 を含む数字の文字列を返したいと思うので、最初の答えを削除しました。少なくとも数字の文字列が15桁より長い可能性があります。

そのため、以下の式は数値をテキスト文字列として返し、先頭と末尾のゼロを保持します。例2941.10としてではなく、そのように返されます2941.1

ここに1つの数式ソリューションがあります

最初にseq名前付き式として定義します:

seq Refers To:  =ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))

seq配列を返す方法{1...255} とは異なりROW(INDIRECT(...、この式は不揮発性です。

次に、押しctrl+shiftながら押しながら入力したこの配列式を使用できますenter

=MID(A1,MATCH(TRUE,ISNUMBER(-MID(A1,seq,1)),0),LOOKUP(2,1/ISNUMBER(-MID(A1,seq,1)),seq)-MATCH(TRUE,ISNUMBER(-MID(A1,seq,1)),0)+1)

または、これを少し長く使用できますが、通常は次の数式を入力します。

=MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),LOOKUP(2,1/ISNUMBER(-MID(A1,seq,1)),seq)-MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789"))+1)

例のように、数字列が常に 14番目の位置から始まる場合は、この単純化された通常入力される式を使用できます。

=MID(A1,14,LOOKUP(2,1/ISNUMBER(-MID(A1,seq,1)),seq)-13)

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.