• ベストアンサー

Excelで文字列の先頭から連続する特定文字を削除

下記例のように半角6文字の文字列が並んでいます。 先頭に”0”が存在する場合のみ”0”が連続する分だけ”0”を削除したいです。 ”0”が後ろの方にあっても途中で”0”以外の文字が入れば後ろの”0”は残したいです。 ”0”がなければ、そのままにしたいです。 出来れば関数で処理したいですが、マクロでも構いません。   02UB0T → 2UB0T   003Y07 → 3Y07   000H00 → H00   000020 → 20   AS143K → AS143K 宜しくお願いします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

単純な配列数式を使って =IF(LEFT(A1)<>"0",A1,MID(A1,MIN(IF(MID(A1,ROW($A$1:$A$6),1)<>"0",ROW($A$1:$A$6))),6)) と記入、必ずコントロールキーとシフトキーを押しながらEnterで入力。 #簡単なマクロを使った方がシンプルというかスマートです 手順: ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける public function notZero(byval Target as variant) as variant  dim i as long  for i = 1 to len(target)   if mid(target, i, 1) <> "0" then exit for  next i  notzero = mid(target, i, len(target)) end function ファイルメニューから終了してエクセルに戻る =notZero(A1) のように、関数として使用する。 #補足 特にメリットはありませんけど =notzero("002345") のように使用しても構いません

noname7412
質問者

お礼

素晴らしいです! 関数でもできるんですね。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! VBAになってしまいますが、一例です。 データはA1セルからあり、B列に表示するとします。 Sub Sample1() Dim i As Long, k As Long, str As String For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row For k = 1 To Len(Cells(i, 1)) str = StrConv(Mid(Cells(i, 1), k, 1), vbNarrow) If str <> "0" Then Exit For End If Next k Cells(i, 2) = Mid(Cells(i, 1), k, Len(Cells(i, 1))) Next i End Sub こんな感じではどうでしょうか?m(_ _)m

noname7412
質問者

お礼

感激です! ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel 特定の文字列が連続で続いたら非表示

    セル内の特定の文字列が2個以上連続してる場合、連続している文字列を非表示にしたい。 セルに横一列にデータを入力し、=C2&","&D2&","&E2&","& ,,,,, 横の列にはデータを","を入れて文字列を結合したセルを表示させます。 例 データの文字列が1 2 3 4 5と入力されていたら 1,2,3,4,5,,,, と表示され複数セルの入力された文字列が結合した形で表示されます。 これを 1,2,3,4,5 とカンマ","が2個以上連続したらデータの(この場合5)後ろの連続しているカンマを非表示にしたいです。 Excelは2016で、使用できる関数が限られています。 この場合、他の関数の組み合わせで1,2,3,4,5と連続するカンマを非表示にする方法はありますでしょうか。 Excelのシートは添付画像の通りです。 詳しい方いましたら、ご教授下さい。 よろしくお願い致します。

  • エクセルで英語の頭のみ大文字にするマクロについて

    Excel2003を使っています 英語の文字列で先頭の文字のみ大文字に変換する下記のマクロを作ってみましたが、記号・・・"("、")"、"/"などを含む文字列の場合、記号の後の先頭文字が小文字になってしまいます。 例 SOMEBODY (WHO) → Somebody (who) これをSomebody (Who) としたいのですがどうしたらよいでしょうか Sub Proper処理x() Dim セル As Range Dim 変換文字 As Strin For Each セル In Selection 変換文字 = StrConv(セル.Text, vbProperCase) セル.Value = 変換文字 Next End Sub ワークシート関数のProper()の場合、記号の後は大文字になります、その代わりCAN'TがCan'Tになってしまします。 Proper関数とStrConv関数では機能が違うのでしょうか 英数文字列の先頭文字を大文字にするマクロで、記号の後の文字を大文字にかつ、アポストロフィーの後のみは小文字にするマクロを作りたいのです。 よろしくお願いします。

  • VBA/FIND関数を使っての先頭文字列の検索方法

    エクセルVBAにてFIND関数を使って、 文字列検索⇒コピー&ペーストのマクロを作成しているのですが、 どうしても、先頭文字列から検索をする方法がわかりません。 たとえば、 あいうえお いうえおあ おあいうえ えおあいう という文字列から「あいう*」を検索したい場合、 1行目だけを抽出したいのですが、 1,3,4行目が抽出されてしまいます。 find関数では先頭文字からの検索はできないのでしょうか? もし、不可能な場合、先頭文字からの検索を行うにはどのように行えばよいでしょうか? アドバイス、よろしくお願いいたします。

  • 文字列を間引く方法

    EXCEL関数、あるいはマクロで下記の処理ができないでしょうか。    1列 1行 T20339636 2行 T20379678 3行 T20340013 のように各セルに9桁の文字列が設定されています。 各文字列の2桁目から5桁目までを間引き、下記のように 設定する。    1列 1行 T9636 2行 T9678 3行 T0013 ご教授のほど、よろしくお願いいたします。

  • EXCEL: セルの先頭に任意の文字列を入れる

    Excel2013 Excelのセルに入力された文字列の先頭に、任意の文字列を入れたいのですが、どのような方法があるでしょうか? マクロが必要でしたら記述をお願いします。マクロが不要な方法があれば、なお便利です。 文字列は1~3文字程度で任意なものを入れたいのですが、既存セルの先頭に入れるだけです。ただ適用セルが数千あるため、手作業を避けたいと考えています。

  • エクセル 検索した文字列の先頭に文字を挿入

    エクセル2010を使用しています。 田中・ 山本 広田 小林・ 杉田 佐々木・ というように氏名の最後尾に  ・  がついたリストがあります。 これを ・田中・ 山本 広田 ・小林・ 杉田 ・佐々木・   としようと思い、 文字列の最後に ・ がついている文字列を検索し、先頭に ・ をつけるような マクロを教えていただけないでしょうか? あちこちのサイトでヒントになりそうなものはあったのですが 基本知識に欠けるところがありうまくマクロが書けず自力は断念しました。 ぴったりくるマクロをお授けいただければ幸いです。

  • EXCEL マクロ 列の削除に時間がかかる

    列はY列まで、行はおおよそ400~500行くらいのエクセルの表があります。 マクロで飛び飛びに行の削除を記録したのですが、処理に時間がかかっています。 もっとスムーズに早くする方法はありますか? ご教授おねがいします。 Range( _ "A:D,H:H,I:J,K:K,M:N,P:U,W:W,X:Y"). _ Select Selection.Delete Shift:=xlToLeft

  • エクセル 文字列の連続入力について。。。

    宜しくお願いします。 エクセルの表で名簿を作っています。 縦の列に名前を入れます。 その名前の列全てに「○○先生」という様に名前の後に先生と言う文字列がつきます。 入力を簡素化にする為に「先生」が簡単に(自動的に)入力されるようにする方法はありますでしょうか? マクロ??関数??その他設定で出来ますか??

  • 特定の文字列を削除

    こんにちは perlで特定の文字列からその後ろをすべて 削除したいのですが、うまくできなくて質問します。 Ex)123.12abc   ⇒123.12 012.123abc   ⇒012.123 123.1234|| ⇒123.1234 上記のようなデータの少数点までの数字の後ろにabc、||、半角、全角スペースなど文字列があります. 少数点までの数字の後ろの文字列すべてを削除したいですが、 特定の文字列からその後ろにある文字列全てを指定する方法(正規表現)はありませんでしょうか? どうかご存知の方、教えてください!! よろしくお願いいたします。

  • 文字列が連続しているかどうか調べたいのですが、良い方法はないでしょうか

    文字列が連続しているかどうか調べたいのですが、良い方法はないでしょうか? ExcelVBAです。 例えば"abc12saaa"などと文字列があって、4文字以上同じ文字が連続したいるか、4文字以上順番になっている文字があるかを調べるにはどのような方法があるでしょうか。 順番になっている文字とは"abcde"とか"1234"のようなものです。 1文字ずつ取り出して比較したり、1文字ずつAsc関数で数値化すればできるとは思いますが、スマートな方法、既存の関数とかないでしょうか。 よろしくお願いします。

専門家に質問してみよう