
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も見ています
-
【Excel VBA】複数ある特定の文字列を含む行を削除
Excel(エクセル)
-
Excel VBA A列が特定の値以外の場合、その行を削除
Excel(エクセル)
-
【VBA】条件に一致しない行を削除したい
Visual Basic(VBA)
-
-
4
指定した文字があった場合、その行を削除するマクロが欲しいです
Excel(エクセル)
-
5
VBAで特定の文字を含まない列の削除方法について
Excel(エクセル)
-
6
【Excel VBA】特定の列以外を削除
Excel(エクセル)
-
7
エクセルマクロ 特定の文字列を含む行のみを残す (マクロ修正)
Excel(エクセル)
-
8
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
9
エクセルVBAで、ある指定した文字を含む行だけを選択したいのですが、、 例えば、1〜20行目までに"6508992"
Excel(エクセル)
-
10
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
11
エクセル 指定した文字列を含む列を削除するには
Excel(エクセル)
-
12
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
13
エクセルで特定の文字が入ってる列を削除方法
Excel(エクセル)
-
14
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
15
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
16
エクセルVBA 特定文字以外の行削除
Excel(エクセル)
-
17
マクロで#N/A"のエラー行を削除したい"
Visual Basic(VBA)
-
18
【Excel VBA】指定行以降をクリアするには?
Visual Basic(VBA)
-
19
VBAで文字列を数値に変換したい
Excel(エクセル)
-
20
エクセルで別シートにリスト化した文字列を含むセルを持つ行を削除する方法を教えてください。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel グラフのプロットからデ...
-
【Excel関数】UNIQUE関数で"0"...
-
結合されたセルをプルダウンの...
-
[EXCEL]ボタン押す→時刻が表に...
-
Excelのフィルター後の一番上の...
-
エクセルで特定の文字列が入っ...
-
excelのデータで色つき行の抽出...
-
Excel ウインドウ枠の固定をす...
-
エクセル 上下で列幅を変えるには
-
特定の文字がある行以外を削除...
-
連続データが入った行の一番右...
-
EXCELで最後の行を固定
-
excel 小さすぎて見えないセル...
-
エクセルで昨日までの日付デー...
-
エクセル マクロで数値が変っ...
-
VBAで行削除のできない場合がある
-
エクセルのセルに指定画像(.jpg...
-
Excelで結合されたセルの間に列...
-
エクセル2003のVBAで列を指定
-
エクセルVBA:リストに登録した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字がある行以外を削除...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセルで特定の文字列が入っ...
-
Excelのフィルター後の一番上の...
-
エクセル 上下で列幅を変えるには
-
エクセル マクロ オートフィ...
-
エクセル マクロで数値が変っ...
-
[EXCEL]ボタン押す→時刻が表に...
-
結合されたセルをプルダウンの...
-
Excel グラフのプロットからデ...
-
excelのデータで色つき行の抽出...
-
excel 小さすぎて見えないセル...
-
A1に入力された文字列と同じ文...
-
EXCELで最後の行を固定
-
Excel ウインドウ枠の固定をす...
-
エクセルVBA 最終行を選んで並...
-
VBAで色の付いているセルの行削除
-
連続データが入った行の一番右...
-
エクセル2016で時間を入力して...
-
チェックボックスをクリックし...
おすすめ情報