エクセルである単純作業があります。
Range("A1").Select
Selection.Delete Shift:=xlUP
Selection.Delete Shift:=xlUP
Range("A4").Select
Selection.Delete Shift:=xlUP
Selection.Delete Shift:=xlUP
これの繰り返しで、A1,A4,A7,A10と3行ずつの列Aが2400くらいまでリピートさせたいのですが、どのようにすればよいのでしょか?
このマクロが良いのかわかりませんが、
[Aの列に数字が入っている場合は、その行は削除、文字列ならばそのまま]という数式でも構いません。
よろしくお願いいたします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
A3,A6,A9,A12,…を残して削除したいのかぁ?と思いますが
ご提示のコードを動かすとそのようになりませんよね?
「Selection.Delete Shift:=xlUP」の意味は今選んでいる行を削除して、その下の行を詰めるという意味です。これを2回行った時点で、元々A4セルはA2セルになっているので、次に消されるのは元々A6セルだったものになってしまいます。
何をやりたいのか?言葉でもう一度説明してください。
[Aの列に数字が入っている場合は、その行は削除、文字列ならばそのまま]の場合ですが
①「数字」と「文字列」の違いは、どのように判断するつもりですか?
②「空欄」の場合はどうするのですか?
③「+」や「-」などが頭についた場合はどうするのでしょうか?
No.2
- 回答日時:
それでは以下のようなものはいかがでしょうか?
--------------------------------------------------------------------------------
Sub 対象行削除()
Dim 行 As Long
行 = 1
Do While Cells(行, 1).Value <> ""
Rows(行 & ":" & 行 + 1).Delete Shift:=xlUp
行 = 行 + 3
Loop
End Sub
--------------------------------------------------------------------------------
すごいです!
A1,A2が削除され、A6,A7が削除され、A11,A12が削除され、A16,17が削除され、A21,22が削除されました。
あるところで動かなくなり、みてみると
AX1:数字
AX2:数字
AX3:文字
AX4:空欄
と文字が一行しかない場合がありました。やはりマクロではなく手作業しかないでしょうか?
No.3
- 回答日時:
それですと一番問題なのは「00:00:03,147 --> 00:00:06,715」などです。
matsubokkuri12 さんは数字だと主張していますが「-->」が有る時点で数字ではありません。
「数字」の行と、頭から8文字が時間として認識出来る行を削除ではいけませんか?
No.4
- 回答日時:
こんばんは!
横からお邪魔します。
>A1,A2を削除してA3,A4を残す。
>A6,A7を削除してA8,A9を残す。
>A11,A12を削除してA13,A14を残す。
と
>数字の場合は行削除して上に詰める、文字の場合は残す...
を自分なりに解釈してみました。
Sub Sample1()
Dim i As Long, myRng As Range
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row Step 5
With Cells(i, "A")
If .Value <> "" And IsNumeric(.Value) Then
If myRng Is Nothing Then
Set myRng = .Resize(2)
Else
Set myRng = Union(myRng, .Resize(2))
End If
End If
End With
Next i
If Not myRng Is Nothing Then '//←念のため//
myRng.EntireRow.Select '//★//
End If
End Sub
※ 行削除ではなく「行選択」でやめています。
正しい行が選択されていた場合は
「★」の行を
>myRng.EntireRow.Delete
に変えてみてください。
※ お望みの結果でなかったらごめんなさい。m(_ _)m
私のつたない説明ですが、tom04さんが解釈された通りです!
A2000でもマクロが動作しました。
ありがとうございました。
マクロ、勉強したくなりました。
No.5
- 回答日時:
回答も無いので、簡単に「頭2文字が数字の行を削除する」で作成してみました。
--------------------------------------------------------------------------------
Sub 対象行削除()
Dim 行 As Long
Application.ScreenUpdating = False
行 = 1
Do While 行 <= Cells(Rows.Count, 1).End(xlUp).Row
If IsNumeric(Left(Cells(行, 1).Value, 2)) Then
Rows(行).Delete Shift:=xlUp
Else
行 = 行 + 1
End If
Loop
ActiveSheet.UsedRange
Application.ScreenUpdating = True
End Sub
--------------------------------------------------------------------------------
※「Application.ScreenUpdating = False」と「Application.ScreenUpdating = True」はスピードアップのために表示切替を止めています。
※「ActiveSheet.UsedRange」はスクロールバーなどの設定を削除後に合わせるために入れています。(削除後、保存されるまでは元の行数を保持してしまうエクセルの仕様を修正するため)
ありがとうございます。
セルの属性が数字、文字ではなく、数字ではじまっている、文字で始まっているセルの間違えですね。
マクロを動かしてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) 【至急】Excel 同一人物の情報を一行にまとめる(複数行) 6 2022/05/24 17:58
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Excel(エクセル) エクセルのVBAにショートカットキーの割り当て 3 2022/07/13 14:19
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) VBA 行削除した連番 4 2023/06/27 16:00
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えてgooの機能に関するアンケ...
-
教えてgooの投稿が運営に消され...
-
回答が付かなかったので、再質...
-
喧嘩をしてLINE削除され、 また...
-
告白してフラれた相手の連絡先...
-
バッチファイルを使用したsql@p...
-
教えてgooでは、自分の質問が削...
-
今日の日付が過ぎたらその行を...
-
日テレニュースHP、記事削除は...
-
VBA:Openステートメントで開い...
-
【エクセル】セル内の右側のみ...
-
エクセルで住所の混在する「丁...
-
教えてgooで、質問や回答が削除...
-
エクセルVBAで行削除時にエラー...
-
【C#】ifと#ifの違い、そして#e...
-
同じ質問
-
もう関わりたくない人がいたらL...
-
女友達にLINEしたら、既読スル...
-
勝手に消えた質問
-
教えて!gooで、自分がした回答...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA:Openステートメントで開い...
-
「医者も看護師も自分に嫌がら...
-
ハメ撮りが流出したら
-
指定した文字があった場合、そ...
-
教えて!gooにはどのカテゴリが...
-
もう関わりたくない人がいたらL...
-
真剣な質問ほど消されるのはど...
-
Facebookメッセンジャーの不具合
-
インスタグラムのギャラリーの...
-
エクセルで住所の混在する「丁...
-
回答してる間に質問が消えるっ...
-
アクセスにおいて間違って削除...
-
喧嘩をしてLINE削除され、 また...
-
バッチファイルを使用したsql@p...
-
Facebookに自分が四つもアップ...
-
ウェブページへのアクセス不可 ...
-
同じ質問
-
日テレニュースHP、記事削除は...
-
女友達にLINEしたら、既読スル...
-
エクセルVBAで行削除時にエラー...
おすすめ情報
A1,A2を削除してA3,A4を残す。
A6,A7を削除してA8,A9を残す。
A11,A12を削除してA13,A14を残す。
これの繰り返しでA2000番台まで行いたいです。
[Aの列に数字が入っている場合・・・]は無視していただいて構いません。
ただ単純に
A1:数字
A2:数字
A3:文字
A4:文字
A5:空欄
この繰り返しがやはりA2000番台まであるので、数字の場合は行削除して上に詰める、文字の場合は残す...という意味でした。