- ベストアンサー
Excelで文字列の先頭から連続する特定文字を削除
下記例のように半角6文字の文字列が並んでいます。 先頭に”0”が存在する場合のみ”0”が連続する分だけ”0”を削除したいです。 ”0”が後ろの方にあっても途中で”0”以外の文字が入れば後ろの”0”は残したいです。 ”0”がなければ、そのままにしたいです。 出来れば関数で処理したいですが、マクロでも構いません。 02UB0T → 2UB0T 003Y07 → 3Y07 000H00 → H00 000020 → 20 AS143K → AS143K 宜しくお願いします。
- みんなの回答 (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") のように使用しても構いません
その他の回答 (1)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 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
お礼
感激です! ありがとうございました。
お礼
素晴らしいです! 関数でもできるんですね。 ありがとうございます。