下記のVBAで
・a列の最終行までの重複しているその行全体を削除
・b列の最終行までの「NG」と「中断」がある行全体を削除
したいのですがうまくいきません。どこにどのようにしたらできるでしょうか?
a列のの重複だけ削除されていて他の行が残ったりします。
詳しい方教えて下さい。お願いします。
Sub 一覧()
Dim lastRow As Long
Dim sourceRange As Range
Dim destinationRange As Range
Dim firstUnderscorePos As Integer
Dim lastUnderscorePos As Integer
Dim valueBeforeUnderscore As String
Dim valueAfterUnderscore As String
' シート1で最終行を取得
lastRow = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).row
' シート1でA2から最終行までの範囲を選択
Set sourceRange = Sheets("Sheet1").Range("A2:A" & lastRow)
' シート2のA1セルから貼り付け
Set destinationRange = Sheets("Sheet2").Range("A1")
' 最初の"_"部分までをA列に、最後の"_"部分のあとをB列に貼り付け
For Each cell In sourceRange
valueBeforeUnderscore = ""
valueAfterUnderscore = ""
' "_"の位置を取得
firstUnderscorePos = InStr(1, cell.value, "_")
lastUnderscorePos = InStrRev(cell.value, "_")
' "_"が存在する場合
If firstUnderscorePos > 0 And lastUnderscorePos > 0 Then
' "_"の前の部分を取得
valueBeforeUnderscore = Mid(cell.value, 1, firstUnderscorePos - 1)
' "_"の後の部分を取得
valueAfterUnderscore = Mid(cell.value, lastUnderscorePos + 1)
End If
' ".xlsx"を削除
valueBeforeUnderscore = Replace(valueBeforeUnderscore, ".xlsx", "")
valueAfterUnderscore = Replace(valueAfterUnderscore, ".xlsx", "")
' A列に貼り付け
destinationRange.value = valueBeforeUnderscore
' B列に貼り付け
destinationRange.Offset(0, 1).value = valueAfterUnderscore
' 次の行に移動
Set destinationRange = destinationRange.Offset(1, 0)
Next cell
End Sub
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
以下のマクロを登録してください。
Sub 一覧 実行後にこのマクロを実行してください。
Public Sub 行削除()
Dim ws As Worksheet
Dim lastRow As Long
Dim del_rows As Range
Dim dicT As Object
Dim ctr As Long: ctr = 0
Dim key As String
Dim dflag As Boolean
Dim rg As String
Dim wrow As Long
Set dicT = CreateObject("Scripting.Dictionary") ' 連想配列の定義
Set ws = Worksheets("Sheet2")
lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
For wrow = 1 To lastRow
dflag = False
If InStr(ws.Cells(wrow, 2).Value, "NG") > 0 Then dflag = True
If InStr(ws.Cells(wrow, 2).Value, "中断") > 0 Then dflag = True
If dflag = False Then
key = ws.Cells(wrow, 1).Value
If dicT.exists(key) = False Then
dicT(key) = True
Else
dflag = True
End If
End If
If dflag = True Then
rg = wrow & ":" & wrow
If ctr = 0 Then
Set del_rows = Range(rg)
Else
Set del_rows = Union(del_rows, Range(rg))
End If
ctr = ctr + 1
End If
Next
If ctr > 0 Then
del_rows.Delete
End If
MsgBox (ctr & "件削除完了")
End Sub
No.1
- 回答日時:
削除したいのは、Sheet2のデータでしょうか?
Sheet1には、具体的には、どのような内容のデータがあるのでしょうか。
削除したいのはSheet2のデータです。
Sheet1には0001_OKのような数字とOK、NGが一緒になった名前もものがA列に並んでいます。(0002_OK、0003_NG・・・)
Sheet2にSheet1の数字部分をA列にOK、NG部分をB列に分けて貼り付けています。Sheet2のA列で重複を探してその行を削除して、B列でNGを探してその行を削除したいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あるあるbotに投稿したけど採用されなかったあるある募集
あるあるbotに投稿したけど採用されなかったあるあるをこちらに投稿してください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
VBAなくなるの?
Visual Basic(VBA)
-
VBA一覧取得 再投稿
Visual Basic(VBA)
-
Excel VBA 定義されたプロージャ名、関数名の取得
Visual Basic(VBA)
-
-
4
VBAで大量のファイルをシート名ごとに転記やらいろいろしたい!
Visual Basic(VBA)
-
5
Vba SelStart、SelLen教えてください教えてください
Visual Basic(VBA)
-
6
VBAコードのインデント表示
Visual Basic(VBA)
-
7
Excel-VBAのmsgBox()の不思議
Visual Basic(VBA)
-
8
VBAに詳しい方教えてください。
Visual Basic(VBA)
-
9
VBA 複数条件の分岐処理の上手な方法
Visual Basic(VBA)
-
10
現在のブックを閉じないで、マクロ抜きの(現在のブックの)コピーを作成したい
Visual Basic(VBA)
-
11
vba 削除
Visual Basic(VBA)
-
12
プログラミング
Visual Basic(VBA)
-
13
Excel VBA 選択範囲の罫線色の変更プロージャの動作速度の改善について
Visual Basic(VBA)
-
14
VBA コードどこがおかしいですか?
Visual Basic(VBA)
-
15
エクセルVBAにて =A1=B1とすれば A1とB1のセル内容が一緒だった場合 TRUE 違っていれ
Visual Basic(VBA)
-
16
左右の表のキー位置を合わせたい
Visual Basic(VBA)
-
17
VBA listBoxから
Visual Basic(VBA)
-
18
WORD VBA プログラム修正をお願いします。
Visual Basic(VBA)
-
19
Vba 実数および実数タイプの変数について教えてください
Visual Basic(VBA)
-
20
エクセルVBAについて
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
B列の最終行までA列をオート...
-
Excelで、あるセルの値に応じて...
-
vba 2つの条件が一致したら...
-
VBA 何かしら文字が入っていたら
-
データグリッドビューの一番最...
-
VBAのFind関数で結合セルを検索...
-
URLのリンク切れをマクロを使っ...
-
【Excel VBA】 B列に特定の文字...
-
Cellsのかっこの中はどっちが行...
-
rowsとcolsの意味
-
【VBA】2つのシートの値を比較...
-
Excel VBA でテキストボックス...
-
エクセル 2つの表の並べ替え
-
VBAの初心者なのですが、「並び...
-
文字列の結合を空白行まで実行
-
エクセルVBA シートモジュール...
-
エクセルVBA intersect colu...
-
IIF関数の使い方
-
マクロ 最終列をコピーして最終...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
B列の最終行までA列をオート...
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
【Excel VBA】 B列に特定の文字...
-
IIF関数の使い方
-
VBAのFind関数で結合セルを検索...
-
URLのリンク切れをマクロを使っ...
-
文字列の結合を空白行まで実行
-
データグリッドビューの一番最...
-
【VBA】2つのシートの値を比較...
-
Changeイベントでの複数セルの...
-
VBAを使って検索したセルをコピ...
-
VBA 何かしら文字が入っていたら
-
エクセルVBA intersect colu...
-
VBAでのリスト不一致抽出について
-
マクロ 最終列をコピーして最終...
-
VBAコンボボックスで選択した値...
-
複数の列の値を結合して別の列...
おすすめ情報