こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

投稿日時 - 2013-06-26 23:06:35

QNo.8151375

困ってます

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

単純な配列数式を使って
=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")
のように使用しても構いません

投稿日時 - 2013-06-26 23:27:03

お礼

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

投稿日時 - 2013-06-26 23:38:13

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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

投稿日時 - 2013-06-26 23:26:42

お礼

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

投稿日時 - 2013-06-26 23:36:53

あなたにオススメの質問