• ベストアンサー

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

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% (363/1775)
回答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/8248)
回答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/22062)
回答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

  • 文字列に数字を含むセルを調べたい

    Excel2007を使っています。 A列の文字列に数字を含む場合、B列に「含む」と表示させたいです。 どういった関数でできるのでしょうか? A列    B列 ABC1   含む DEFG 23HIJK  含む I4M5N   含む OPQ RSTUV W6X    含む 7YZ8    含む

  • 15文字を超える文字列のランク付け方法

    いつもお世話になっております。 Office2007にて、ExcelVBAでプログラムを組んでいるのですが、 現在、15文字を超える文字列の並べ替えについていい方法が浮かばず 悩んでおります。 例えば、以下のケースにおいて、B列に、A列の長い文字列の大小関係を 判定して、RANK関数のように順位を表示させたいのですが、名案が中々 浮かびません。文字列長15桁を超えてしまうと、様々な関数が機能しないようです。               A                        B 1234567890123456789012345678901234567890 0987654321098765432109876543210987654321 6789012345678901234567890123456789012345              ・・・ ⇒               A                        B 1234567890123456789012345678901234567890        2 0987654321098765432109876543210987654321        1 6789012345678901234567890123456789012345        3              ・・・ 昨日半日悩んでしまい非常に困っています。 どなたかご教授いただければ幸いです。

  • エクセルで末尾の文字を消去

    セル内の文字列の末尾部分を消去する関数等を教えて下さい。

  • Excel2000のセル内の文字列の数字の先の2桁を取り出す方法について

    年のいった初心者です。 以前の質問に対する回答有難うございます。また、教えてください。  エクセル2000です。セル内に数字の文字列で、4桁、6桁、8桁のものが有ります。4桁のものには"01"を、6桁のものには"60"を、表示し、8桁のものには数種類あり、8桁の場合は、各文字列で上位の2桁を表示したいのです。 =IF(LEN(A1)=4,"01",IF(LEN(A1)=6,"60",IF(LEN(A1)=8,?????? 4桁、6桁については以前に教えていただいた、関数等でいけたのですが、8桁のときが分かりません。困っています。お願いします。     A列    B列 1 7532 →→ 01 2 280573 →→ 60 3 34964821 →→ 34 4 06839775 →→ 06 5 67500023 →→ 67

  • 文字列から数字をカウント

    エクセルバージョン2007 A列に以下の文字列が有る場合、数字の一塊のカウントではなく、文字列に入っています "0,1,2,3,4,5,6,7,8,9" それぞれをカウントする関数をご教授頂ければ幸いです。 12345-67890    → B列に 10 と表示 2aa-12345-00   → B列に 8 と表示 1bb        → B列に 1 と表示 以上、宜しくお願い致します。

  • 数字と文字列から数字のみ取り出したい

    下記のような数字と文字の組み合わさった文字列から数字のみを取り出したいのですが、 基準となる文字もなく、数字の桁、文字数もバラバラで、さらに文字部分にも数字が 入っていて調べた数式が使えず困っています。 (例1)109778大倉山マンション第3⇒109778 を取り出したい (例2)13482マックハイム綱島第10 ⇒ 13482 を取り出したい (例3)12896ハイム大倉山⇒12896 を取り出したい (例4)1198藤和シティコープ大倉山太尾町A棟⇒1198を取り出したい 調べた数式=LEFT(A1,LEN(A1)*10-SUM(LEN(SUBSTITUTE(A1,{0,1,2,3,4,5,6,7,8,9},)))) 上記の数式だと(例1)(例2)の場合、建物名の数値を反映してしまい数値のみ取り出せません。 数値部分はみたところ4~6桁でした。 何か良い数式がありましたら、ご教授願います。

  • エクセル 特定の文字列の消去について

    ある資料Aから、 ある資料Bの文字列を全部消去したいと思っています。 つまり資料Aの文字列から、 Bの文字を抜き出すわけですが Bの資料にはAから削除したい文字が複数フィールドあります。 データ量が多いため、一列にすることが現実的ではないため、 Substituteのようなコラム処理を複数コラムをもとにできるのかどうか、 知識のある方いらっしゃいましたらアドバイスよろしくお願いします。 添付画像のように、 Aにはコラムが一つだけ Bにはコラムが3つあり、 Bのすべてのコラムの文字列をAから消去したいです。 Bの1行目の文字列が Aの違う行に出てきても消去の対象としたいです。 よろしくお願いします。

  • エクセル 文字列から数字だけを抽出

    エクセル2016の操作について教えて下さい。 セル内の文字列から数字だけを抽出したいです。 例えばAの列にこのような文字列が入っているとします。 高度5km 高度10.1km この中の数字だけを取り出して隣のB列の同じ行に数字だけを表示させる方法がありましたら教えて下さい。 宜しくお願いします。

  • Excel セル内の文字列の数字の桁数を増す方法について

    エクセル2000にて、セル内に4桁、6桁、7桁、8桁の文字列の数字が、別々に入っているとき、文字列の数字が7桁の時のみ 0 を書き加えて、8桁にする方法を教えてください。 例)A1 4001 33000018 6200095 →06200095 6100092 →06100092 4176 200025 6100061

  • 列に含まれる同じ文字列をカウントし、表示させる方法を教えてください。

    簡単な質問かもしれませんが、どうかお願い致します。  A    B   C    D    E    F    G  5桁  2桁       5桁 カウント  2桁 カウント 11111  11 11111  11 11111  11 11111  11 11121  11 11121  11 12111  12 13111  13 上記のような A列には5桁の数字 B列には2桁の数字 エクセルのデータがあるとして、 まず、A列で同じ数字をカウントし、  A    B   C    D    E    F    G  5桁  2桁       5桁 カウント  2桁 カウント 11111  11      11111  4 11111  11      11121  2 11111  11      12111  1 11111  11      13111  1 11121  11 11121  11 12111  12 13111  13 のように表示させたいのですが、どうしたらいいかわかりません。 データが膨大で数字がランダムな為、CountIfは使えないんだと思いますが、素人なので、詳しくはわかりません。 また、B列が何なのかと言いますと、A列の上2桁が入っています。 なぜ必要かなんですが、理由があります。 A列で5桁でカウントした個数が2以下の場合、5桁ではカウントせずに、2桁でカウントするという風にしたいのです。 しかも、5桁でカウントし、3以上だった数字については2桁ではカウントしない様にしたいんです。 要するに、最終的に  A    B   C    D    E    F    G  5桁  2桁       5桁 カウント  2桁 カウント 11111  11       11111  4    11   2 11111  11                  12   1 11111  11                  13   1 11111  11 11121  11 11121  11 12111  12 13111  13 のように表示させたいんです。 長々とすみません。 ご指導のほど、よろしくお願いいたします

専門家に質問してみよう