No.8ベストアンサー
- 回答日時:
NO5です。
>やってみましたが、かなり時間がかかってしまいました。
画面更新を無効にする事でもかなり時間短縮できますが如何でしょうか。
Sub 行を削除()
Application.ScreenUpdating = False
For i = Cells(Rows.Count, "E").End(xlUp).Row To 1 Step -1
If Cells(i, "E") <> "S01" And _
Cells(i, "E") <> "S02" And _
Cells(i, "E") <> "E03" Then
Rows(i).Delete
End If
Next
Application.ScreenUpdating = True
End Sub
No.6
- 回答日時:
5000行じゃなく5万行のデータなんですね?
ならば、行の削除じゃやたら時間がかかると思います。
いったん配列に取り込んで必要なデータだけ残してあとは消すようにしてみました。
Sub test01()
Dim myV, myW, myStr
Dim i As Long, j As Long, n As Long, k As Long
myStr = Split("S01、S02、E03", "、")
myV = Range("A1:K50000").Value
ReDim myW(1 To 50000, 1 To 11)
For i = 1 To 50000
For k = 0 To 2
If myStr(k) = myV(i, 5) Then
n = n + 1
For j = 1 To 11
myW(n, j) = myV(i, j)
Next j
Exit For
End If
Next k
Next i
Range("A1:K50000").ClearContents
Range("A1:K" & n).Value = myW
End Sub
ありがとうございます。
If myStr(k) = myV(i, 5) Thenでエラーになってしまいました。
あと、 myStr = Split("S01、S02、E03", "、")の全角「、」がOSの関係上記載できません。
どうしたらいのでしょうか。
No.5
- 回答日時:
一例です。
E列を元に規定の文字列(英数字は半角としています)以外の行を削除
Sub 行を削除()
For i = Cells(Rows.Count, "E").End(xlUp).Row To 1 Step -1
If Cells(i, "E") <> "S01" And _
Cells(i, "E") <> "S02" And _
Cells(i, "E") <> "E03" Then
Rows(i).Delete
End If
Next
End Sub
No.4
- 回答日時:
No.3です!
前回のコードで誤りがありました。
4行目の
If Cells(i, 5) <> "S01" And Cells(i, 5) <> "S05" And Cells(i, 5) <> "E03" Then
を
If Cells(i, 5) <> "S01" And Cells(i, 5) <> "S02" And Cells(i, 5) <> "E03" Then
に訂正してください。
何度も失礼しました。m(__)m
やってみたら全部削除されてしまいました。
やはり文字列の問題でしょうか。
前後の空白も一緒にしてみたんですが。。。
でも非常に参考になりました。
ありがとうございました。
No.3
- 回答日時:
こんにちは!
一例です。
データは必ず5000行目まであるとして・・・
Sub test()
Dim i As Long
For i = 5000 To 1 Step -1
If Cells(i, 5) <> "S01" And Cells(i, 5) <> "S05" And Cells(i, 5) <> "E03" Then
Range(Cells(i, 1), Cells(i, 11)).Delete (xlUp)
End If
Next i
End Sub
こんな感じではどうでしょうか?
尚、データがなくても5000行目から操作していきますので、少し時間がかかると思います。m(__)m
No.2
- 回答日時:
sub sample2()
if application.counta("E2:E500") = 0 then exit sub
range("L:L").insert
range("L2:L5000").formula = "=(E2=""S01"")+(E2=""S02"")+(E2=""E03"")"
range("L:L").autofilter field:=1, criteria1:=0
range("A2:L5000").entirerow.delete shift:=xlshiftup
activesheet.autofiltermode = false
range("L:L").delete shift:=xlshifttoleft
end sub
など。
やってみたんですが。データが一つも削除されませんでした。
S01等の文字がうまく認識されてないのかな???
でも非常に参考になりました。
ありがとうございました。
No.1
- 回答日時:
マクロを使うよりも関数を使って別のシートに抽出したものを表示させるのがよいでしょう。
シート1の2行目から下方にデータがあるとしてL2セルには次の式を入力します。
=IF(OR(E2="S01",E2="S02",E2="E03"),MAX(L$1:L1)+1,"")
その後にL2セルを選択して右クリックして「コピー」を選択します。
次いで数式バー上にはL2と表示されていますがL2:L50000と入力してから確定します。これでL2セルからL50000セルまでが選択状態になりますので右クリックして「貼り付け」を選択します。
これでL列にはS01,S02,E03と書かれた行にのみ上から番号が付けられます。
次にシート2に移ってA2セルには次の式を入力します。
=IF(COUNTIF(Sheet1!$L:$L,ROW(A1))=0,"",INDEX(Sheet1!$A:$K,MATCH(ROW(A1),Sheet1!$L:$L,0),COLUMN(A1)))
その後にA2セルを選択してから右クリックして「コピー」を選択します。
次いで数式バー上にはA2と表示されていますがA2:K50000と入力してから確定します。これでA2セルからK50000セルまでが選択状態になりますので右クリックして「貼り付け」を選択します。
お望みの表が表示されますね。
この回答への補足
早速回答ありがとうございます。
でも今回は、会計データベースからダウンロードしたデータに一連の処理
をして、別のデータを作るというマクロを作成しており、
この作業はその途中で発生するものです。
なので、すみませんがマクロの記載方法を教えていただけると大変助かります。
どうぞよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/25 16:07
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Excel(エクセル) VBA 文字列変換と指定した列にある日時データから時間を削除する方法について 2 2022/04/14 15:23
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/05/23 15:54
- Excel(エクセル) エクセルVBA 複数行にまたがっている選択を判定するには 2 2023/05/21 21:54
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
このQ&Aを見た人はこんなQ&Aも見ています
-
【Excel VBA】複数ある特定の文字列を含む行を削除
Excel(エクセル)
-
Excel VBA A列が特定の値以外の場合、その行を削除
Excel(エクセル)
-
【VBA】条件に一致しない行を削除したい
Visual Basic(VBA)
-
-
4
VBAで特定の文字を含まない列の削除方法について
Excel(エクセル)
-
5
指定した文字があった場合、その行を削除するマクロが欲しいです
Excel(エクセル)
-
6
【Excel VBA】特定の列以外を削除
Excel(エクセル)
-
7
エクセルマクロ 特定の文字列を含む行のみを残す (マクロ修正)
Excel(エクセル)
-
8
エクセルVBA 特定文字以外の行削除
Excel(エクセル)
-
9
エクセルVBAで、ある指定した文字を含む行だけを選択したいのですが、、 例えば、1〜20行目までに"6508992"
Excel(エクセル)
-
10
エクセルで特定の文字が入ってる列を削除方法
Excel(エクセル)
-
11
マクロで#N/A"のエラー行を削除したい"
Visual Basic(VBA)
-
12
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
13
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
14
エクセル 指定した文字列を含む列を削除するには
Excel(エクセル)
-
15
Excel vbaで特定の文字以外が入っている時、メッセージを表示させるプログラムについて
Visual Basic(VBA)
-
16
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
17
【VBA】条件に一致しない行を削除したい 複数条件
Visual Basic(VBA)
-
18
B列の最終行までA列をオートフィル
Visual Basic(VBA)
-
19
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
20
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定の文字がある行以外を削除...
-
[EXCEL]ボタン押す→時刻が表に...
-
Excelのフィルター後の一番上の...
-
電話番号の入力方式が違うデー...
-
エクセル 上下で列幅を変えるには
-
エクセルマクロで偶数行(又は...
-
エクセルで特定の文字列が入っ...
-
結合されたセルをプルダウンの...
-
【Excel関数】UNIQUE関数で"0"...
-
Excel グラフのプロットからデ...
-
エクセルVBA 行を探すマクロ
-
A1に入力された文字列と同じ文...
-
エクセル マクロで数値が変っ...
-
連続データが入った行の一番右...
-
エクセル マクロ オートフィ...
-
セルの色によって条件文をつけ...
-
EXCEL VBA 正しく入力されてい...
-
エクセルでこんな事できますか?
-
excelのデータで色つき行の抽出...
-
Excelでカタカナ・ひらがな・英...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel関数】UNIQUE関数で"0"...
-
特定の文字がある行以外を削除...
-
エクセルで特定の文字列が入っ...
-
エクセル 上下で列幅を変えるには
-
エクセル マクロで数値が変っ...
-
[EXCEL]ボタン押す→時刻が表に...
-
excel 小さすぎて見えないセル...
-
エクセル マクロ オートフィ...
-
Excel グラフのプロットからデ...
-
Excelのフィルター後の一番上の...
-
結合されたセルをプルダウンの...
-
EXCELで最後の行を固定
-
excelのデータで色つき行の抽出...
-
アクティブになっている行をマ...
-
連続データが入った行の一番右...
-
Excel ウインドウ枠の固定をす...
-
エクセルのセルに指定画像(.jpg...
-
エクセルVBA 最終行を選んで並...
-
VBAで色の付いているセルの行削除
-
Excelでカタカナ・ひらがな・英...
おすすめ情報