• ベストアンサー

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

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

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答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