新規会員登録における電話番号登録必須化のお知らせ

①VBAで、H列の値のうち特定の文字「:」も含め、その文字より右側を削除して、残った数値を文字列に変換したいです。
・特定の文字以降の文字数は、一定ではありません
・文字列に変換したい残った数値の桁数は一定ではありません
・H列の値の最下行が常に一定ではないため、列ごとしたいです

②VBAで、I列の値のうち特定の文字「:」も含め、その文字より左側を削除したいです。
・特定の文字以降の文字数は、一定ではありません
・I列も値の最下行が常に一定ではないため、列ごとしたいです

関数ではなくVBAで実行したく、初心者が無理をして恐縮ですが、勉強のためどなたかご教示いただけましたら幸いです。

説明が拙く画像も添付させていただきます。
お手数お掛けいたしますが、よろしくお願いいたします。

「VBAで、特定の文字より後を削除して残っ」の質問画像
教えて!goo グレード

A 回答 (3件)

こんばんは



元の値に ":" が無い場合や空白セルの場合、あるいは、":" が複数含まれる場合などにどのような結果をお求めなのかわかりませんけれど、勝手に解釈しました。

以下ではいかがでしょうか?

Sub Q12901413()
Dim rw As Long, col As Long
Dim rng As Range
Dim v, i As Long, n As Long

Const del = ":" ’←区切り文字

For col = 8 To 9
rw = Cells(Rows.Count, col).End(xlUp).Row
rw = Application.Max(rw, 2)
Set rng = Cells(2, col).Resize(rw - 1)
v = rng.Value
For i = 1 To UBound(v)
If col = 8 Then
n = InStr(v(i, 1), del)
v(i, 1) = Left(v(i, 1), IIf(n, n - 1, 99))
Else
n = InStrRev(v(i, 1), del)
v(i, 1) = Mid(v(i, 1), IIf(n, n + 1, 1), 99)
End If
Next i
rng.NumberFormat = "@"
rng.Value = v
Next col
End Sub
    • good
    • 0
この回答へのお礼

お世話になります。ご返信遅くなり申し訳ございません。
早々にご回答いただきありがとうございました!
元の値に 「:」 が無い場合や空白セルの場合などを想定していなかったので、そちらも加味した記述を教えていただきありがとうございます。
こちらのご説明不足にもかかわらず、確かにそういったこともありますので、大変勉強になりました。
お気遣い感謝いたします。
またご相談するかと思いますが、ご教示いただけましたら幸いです。

お礼日時:2022/04/18 11:35

こんなのでも、行けそうです。



Sub Macro1()
Dim r As Range
For Each r In Columns("H:I").SpecialCells(xlCellTypeConstants, 23)
r.Value = "'" & Split(r.Value, ":")(0)
Next r
End Sub
    • good
    • 0
この回答へのお礼

お世話になります。ご返信遅くなり申し訳ございません。
早々にご回答いただきありがとうございました!
こちらの記述でも希望通りの実行ができました!
色々な記述があり大変勉強になりました。
またご相談するかと思いますが、ご教示いただけましたら幸いです。

お礼日時:2022/04/18 11:36

何の工夫もしてないけど。


2行目から最終行まで処理してます。

Option Explicit
Sub sample()
  Dim i As Long
  Dim j As Long
  '①の処理
  j = Cells(Rows.Count, "H").End(xlUp).Row 'H列の最終行取得
  For i = 2 To j
    Cells(i, "H") = "'" & Left(Cells(i, "H"), InStr(Cells(i, "H"), ":") - 1)
  Next
  '②の処理
  j = Cells(Rows.Count, "I").End(xlUp).Row 'I列の最終行取得
  For i = 2 To j
    Cells(i, "I") = Right(Cells(i, "I"), Len(Cells(i, "I")) - InStr(Cells(i, "I"), ":"))
  Next
End Sub
    • good
    • 0
この回答へのお礼

お世話になります。ご返信遅くなり申し訳ございません。
早々にご回答いただきありがとうございました!
こちらの記述で希望の実行ができました。
大変勉強になりました。
またご相談するかと思いますが、ご教示いただけましたら幸いです。

お礼日時:2022/04/18 11:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング