
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
電子書籍プレゼントキャンペーン!
最大2万円超分当たる!マンガや小説が読める電子書籍サービス『Renta!』で利用できるギフトコードプレゼント実施中!
-
Excel VBA A列が特定の値以外の場合、その行を削除
Excel(エクセル)
-
エクセルVBA 特定文字以外の行削除
Excel(エクセル)
-
【Excel VBA】複数ある特定の文字列を含む行を削除
Excel(エクセル)
-
4
VBAで特定の文字を含まない列の削除方法について
Excel(エクセル)
-
5
【VBA】条件に一致しない行を削除したい 複数条件
Visual Basic(VBA)
-
6
指定した文字があった場合、その行を削除するマクロが欲しいです
Excel(エクセル)
-
7
特定の文字を含まない行の削除
Excel(エクセル)
-
8
【VBA】条件に一致しない行を削除したい
Visual Basic(VBA)
-
9
エクセルマクロ 特定の文字列を含む行のみを残す (マクロ修正)
Excel(エクセル)
-
10
【VBA】指定した検索条件に一致したら別シートに転記したい
Visual Basic(VBA)
-
11
【Excel VBA】特定の列以外を削除
Excel(エクセル)
-
12
エクセル 指定した文字列を含む列を削除するには
Excel(エクセル)
-
13
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
14
【VBA】特定の文字が入っている行の一部を抽出して別シートコピーするには
Visual Basic(VBA)
-
15
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
16
エクセルで特定の文字が入ってる列を削除方法
Excel(エクセル)
-
17
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
18
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
-
19
VBAで特定の文字が入力されたセルを選択
Excel(エクセル)
-
20
エクセルで指定した項目の列だけ残し、残りは削除したい
Windows Vista・XP
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
エクセルで特定の文字列が入っ...
-
5
[EXCEL]ボタン押す→時刻が表に...
-
6
結合されたセルをプルダウンの...
-
7
AのセルとB行を比較して、一致...
-
8
Excel グラフのプロットからデ...
-
9
excelのデータで色つき行の抽出...
-
10
特定の文字がある行以外を削除...
-
11
VBAで「Shift+ctrl+↓」のような...
-
12
エクセルマクロ オートSUM(合...
-
13
エクセルで選択したセルのある...
-
14
エクセルVBA 最終行を選んで並...
-
15
サイズの違うセル 並べ変え
-
16
エクセルマクロで偶数行(又は...
-
17
Excel 時刻の並び替え
-
18
Excel2007で、指定範囲の行高さ...
-
19
"/"でセル内の文字を縦に分割す...
-
20
エクセルで、列内の連続した文...
おすすめ情報
公式facebook
公式twitter