
①VBAで、H列の値のうち特定の文字「:」も含め、その文字より右側を削除して、残った数値を文字列に変換したいです。
・特定の文字以降の文字数は、一定ではありません
・文字列に変換したい残った数値の桁数は一定ではありません
・H列の値の最下行が常に一定ではないため、列ごとしたいです
②VBAで、I列の値のうち特定の文字「:」も含め、その文字より左側を削除したいです。
・特定の文字以降の文字数は、一定ではありません
・I列も値の最下行が常に一定ではないため、列ごとしたいです
関数ではなくVBAで実行したく、初心者が無理をして恐縮ですが、勉強のためどなたかご教示いただけましたら幸いです。
説明が拙く画像も添付させていただきます。
お手数お掛けいたしますが、よろしくお願いいたします。

No.2ベストアンサー
- 回答日時:
こんばんは
元の値に ":" が無い場合や空白セルの場合、あるいは、":" が複数含まれる場合などにどのような結果をお求めなのかわかりませんけれど、勝手に解釈しました。
以下ではいかがでしょうか?
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
お世話になります。ご返信遅くなり申し訳ございません。
早々にご回答いただきありがとうございました!
元の値に 「:」 が無い場合や空白セルの場合などを想定していなかったので、そちらも加味した記述を教えていただきありがとうございます。
こちらのご説明不足にもかかわらず、確かにそういったこともありますので、大変勉強になりました。
お気遣い感謝いたします。
またご相談するかと思いますが、ご教示いただけましたら幸いです。
No.3
- 回答日時:
こんなのでも、行けそうです。
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
お世話になります。ご返信遅くなり申し訳ございません。
早々にご回答いただきありがとうございました!
こちらの記述でも希望通りの実行ができました!
色々な記述があり大変勉強になりました。
またご相談するかと思いますが、ご教示いただけましたら幸いです。
No.1
- 回答日時:
何の工夫もしてないけど。
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
お世話になります。ご返信遅くなり申し訳ございません。
早々にご回答いただきありがとうございました!
こちらの記述で希望の実行ができました。
大変勉強になりました。
またご相談するかと思いますが、ご教示いただけましたら幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel VBA:特定の文字列以降(あるいは以前)のテキストをすべて取得する方法
Visual Basic(VBA)
-
ある特定の文字以降全て削除したいです。
Excel(エクセル)
-
VBAでの Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
-
-
4
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
5
特定の文字がある行以外を削除するマクロ
その他(Microsoft Office)
-
6
【Excel VBA】複数ある特定の文字列を含む行を削除
Excel(エクセル)
-
7
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
8
もしセルが#N/A"なら~をする・・・には?"
Excel(エクセル)
-
9
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
10
VBAで特定の文字以降の文字列の色の変更をしたい
Excel(エクセル)
-
11
VBAで特定の文字が入力されたセルを選択
Excel(エクセル)
-
12
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
13
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
-
14
【Excel VBA】指定行以降をクリアするには?
Visual Basic(VBA)
-
15
重複するIDのデータを1行にまとめるvbaのコード
Access(アクセス)
-
16
オートフィルターをかけ、#N/A以外で絞込みするVBA記述をご教示ください
Excel(エクセル)
-
17
EXCEL VBA で指定した範囲に入力があるかどうか?
Visual Basic(VBA)
-
18
VBAコード記述に際して、コード全体を自動的にインデント付ける方法
Access(アクセス)
-
19
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
20
VBA シートのボタン名を変更したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
Cellsのかっこの中はどっちが行...
-
複数の列の値を結合して別の列...
-
rowsとcolsの意味
-
IIF関数の使い方
-
VBAを使用し、数式を無視した最...
-
VBAリストボックスへの複数列の...
-
エクセル VBA ユーザーフォー...
-
VBAのFind関数で結合セルを検索...
-
VBマクロ 色の付いたセルを...
-
【Excel VBA】カンマと改行コー...
-
エクセル 2つの表の並べ替え
-
VBAに関するメッセージ
-
Excel VBA_2000ハイパーリンク...
-
VBA: 2列のリストボックスの2列...
-
Worksheets メソッドは失敗しま...
-
複数csvを横に追加していくマク...
-
targetをA列のセルに限定するに...
-
C# 列の挿入
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA sum ワークシートChange
-
Excelで、あるセルの値に応じて...
-
Worksheets メソッドは失敗しま...
-
URLのリンク切れをマクロを使っ...
-
【VBA】2つのシートの値を比較...
-
rowsとcolsの意味
-
Cellsのかっこの中はどっちが行...
-
vba 2つの条件が一致したら...
-
IIF関数の使い方
-
B列の最終行までA列をオート...
-
VBAでのリスト不一致抽出について
-
複数の列の値を結合して別の列...
-
VBA 何かしら文字が入っていたら
-
VBAのFind関数で結合セルを検索...
-
エクセル 2つの表の並べ替え
-
DataGridViewに空白がある場合...
-
文字列の結合を空白行まで実行
-
データグリッドビューの一番最...
-
【VBA】複数行あるカンマ区切り...
-
ExcelVBAでテキストルーレット...
おすすめ情報