- ベストアンサー
セル内からの数字の抽出
複数のセルがあり、そのセルそれぞれに、 「(文字列A)(数字1) (文字列B)(数字2)」 と入力してあります。(文字列A)と(文字列B)は、定型文字列なので、複数のセルがありますが、同じ文字列が入っています。 一方で、(数字1)(数字2)は、それぞれのセルによって、異なった数字が入っています。 ただし、セルによっては、(文字列A)(数字1)は、入力していないものもあります。 このようなセルが複数ある中から、(数字1)だけを抽出して、セル内に「(数字1)」だけの列を作りたいのですが、何かよい方法はないでしょうか?よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
文字列が提携としたら、文字数をn 数字は必要な桁をm 空白セルは、if文で対応して =IF(A1="",0,VALUE(MID(A1,n,m))) これで如何?
その他の回答 (5)
- zap35
- ベストアンサー率44% (1383/3079)
#02です (文字列A)が固定長なら(この例は2桁固定の場合) =IF(LEFT(A1,1)=" ","",MID(A1,3,2)) (文字列A)が不定長なら =IF(LEFT(A1,1)=" ","",MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),2)) 余計ですが(文字列A)(数字1)ともに不定長で(数字1)と(文字列B)の間に半角スペースがあるなら =IF(LEFT(A1,1)=" ","",MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),FIND(" ",A1)-MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789"))))
#4です。ゴメンナサイ、入力ミスがありました。 8行目 誤: 1行目は「AAA_12」「BBB」「10:10」、2行目は「空白」「BBB」「12:05」とセルを分けることが出来ます。 性: 1行目は「AAA12」「BBB」「10:10」、2行目は「空白」「BBB」「12:05」とセルを分けることが出来ます。 「AAA_12」は「AAA12」の間違いです。
何かの機器から出力されるログデータのテキストファイルのように見えますが、 もしそうなら、毎回取り込んでいるのでしょう。 だったら、取込直後に 「データ」-「区切り位置」を使えば AAA12_BBB_10:10 _BBB_12:05 を 1行目は「AAA_12」「BBB」「10:10」、2行目は「空白」「BBB」「12:05」とセルを分けることが出来ます。 あるいは、直接テキストファイルを開かずに、 「データ」-「外部データの取込」で データ区切りに「スペース」を指定してやれば、上記と同じかたちでセル分けされて取り込まれます。 そのうえで、 =IF(ISERR(FIND("文字列A",A1,1)),"",RIGHT(A1,2)) とすればOKです。 実際の数字の取り出し部分は「RIGHT(A1,2)」だけとなり、後ろにある「文字列B」や「時間データ」を全く気にせずに済みます。 このように、出来てしまった結果で悩むより、「上流で対策を施す」方が簡単になることがあります。 ご参考まで...
- mu2011
- ベストアンサー率38% (1910/4994)
A列のデータをB列に抽出する一例ですが、次の方法は如何でしょうか。 B1に=IF(LEFT(A1,2)="文字列A",MID(A1,3,2)*1,"")を設定し、下方向にコピー 因みに抽出数字は数値、文字列Aが存在しない場合は空セルにしています。
- zap35
- ベストアンサー率44% (1383/3079)
4点について補足要求です 1)文字列Bは「定型文字列」とのことですが、1パターンの固定文字列ですか? それとも複数パターンあるのですか? それによって方法が変わります。 2)(数字1)と(文字列B)の間に空白があるように見えますが、実際のデータには空白はありますか? 3) >セルによっては、(文字列A)(数字1)は、入力していないものもあります。 このセルは(文字列B)(数字2)だけと思って良いですか 4)数字の長さは固定長ですか? 可変長ですか?
補足
補足します。 1)固定の文字列です。 2)おっしゃるとおり、空白(半角スペース)があります。 3)思ってもらってよいですが(文字列B)の前に半角スペースがあります。 4)固定長です。数字1:二桁(半角)、数字2:??:??←時間で半角 さらに詳しくは、 (文字列A)(数字1)_(文字列B)_(数字2) or _(文字列B)_(数字2) _:半角スペースを表します。