• ベストアンサー

末尾の数字を文字列から消去する

office2010 A列に8桁の文字列が複数行入っています。 A1B00001 A1CB0002 A1NDE302 … この状態で後側の数字(一番最後の英の文字列を残す)を消去したいです。 消去された文字列はB列に表示。 上記の場合 A1B A1CB A1NDE … をB列に表示する方法を教えていただきたく。 関数、VBAどちらでも可です。 数字だけを消去というのはWEBで探せたのですが、英と英の間の数字は残したいのです。

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

  • ベストアンサー
  • mt2015
  • ベストアンサー率49% (258/524)
回答No.2

これはユーザ関数を作ってしまった方が楽だと思います。 Function fSample(sTarget As String) As String   fSample = ""   For i = Len(sTarget) To 1 Step -1     sOne = Mid(sTarget, i, 1)     If IsNumeric(sOne) = False Then       fSample = Left(sTarget, i)       Exit For     End If   Next i End Function

3620313
質問者

お礼

回答ありがとうございます。 他の方々にも、いろいろ事例を紹介いただきましたが、mt2015さんの事例が、私の知らなかったユーザ関数というもので、今後いろいろ活用できそうなので、こちらをベストアンサーとさせていただきます。

その他の回答 (5)

  • msMike
  • ベストアンサー率20% (368/1812)
回答No.6

B1: =LEFT(A1,SMALL(IF(ISNUMBER(1*MID(A1,COLUMN(A:H),1)),COLUMN(A:H),""),2)-1) 【お断り】上式は必ず配列数式として入力のこと

3620313
質問者

お礼

回答ありがとうございます。 サンプル試しましたが、 H2000000の結果がH2 BHD00000の結果がBHD0 と数字が残ってしまいます。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.5

>A列に8桁の文字列が複数行入っています。 > ・・・・中略・・・・ >をB列に表示する方法を教えていただきたく。 A1セルの文字列を処理してB1列へ代入する数式は下記のようになります。 =LEFT(A1,MAX(INDEX((CODE(MID(A1,COLUMN(A1:H1),1))>57)*COLUMN(A1:H1),0)))

3620313
質問者

お礼

ステキです、ありがとうございます。

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.4

ごめんなさい、ANo.3だと7ケタですね。 8ケタに訂正します。 =LEFT(A1,MAX(ISERROR(1*MID($A1&"00000000",COLUMN(A1:H1),1))*COLUMN(A1:H1))) これをCtrl+Shift+Enterで確定してください。

3620313
質問者

お礼

ステキです、ありがとうございます。

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.3

ANo.2です 演算式でやるならB2に↓の式を入れ、Ctrl+Shift+Enterで配列数式として確定 =LEFT(A1,MAX(ISERROR(1*MID($A1&"00000000",COLUMN(A1:G1),1))*COLUMN(A1:G1)))

3620313
質問者

お礼

回答ありがとうございます。

  • aokii
  • ベストアンサー率23% (5210/22063)
回答No.1

T列に表示させた場合ですが、以下の方法でいかがでしょう。 BからI列に =MID($A1,COLUMN(B1)-1,1) JからQ列に =IF(ISERR(B1+0),"a",B1+0) R列に =Q1&P1&O1&N1&M1&L1&K1&J1 S列に =10-FIND("a",R1) T列に =LEFT(A1,S1-1)

3620313
質問者

お礼

回答ありがとうございます。 考え方、参考になりました。 ちょっと作業列を多く使用するのが、難点でした。

関連するQ&A