
● A B C D E F G
1 2/1 10:00 10 0 入荷 出荷 リンゴ
2
3 2/1 11:00 10 2 入荷 出荷 イチゴ
4
5 2/1 12:00 10 1 入荷 出荷 リンゴ
6
7 2/1 12:00 10 1 入荷 出荷 リンゴ
8 2/1 13:00 10 0 入荷 出荷 リンゴ
9 2/1 14:00 10 2 入荷 出荷 リンゴ
10
11 2/1 15:00 10 0 入荷 出荷 イチゴ
12 2/1 16:00 10 10 入荷 出荷 リンゴ
13 2/1 17:00 10 0 入荷 出荷 リンゴ
14 2/1 18:00 10 3 入荷 出荷 ミカン
15 2/1 19:00 10 1 入荷 出荷 リンゴ
16 2/1 19:30 10 0 入荷 出荷 イチゴ
17 2/1 20:00 10 5 入荷 出荷 リンゴ
上手に表が書けないのですが、上のような表があるときに、G列の3行目のイチゴの上下にある空白行(2行目・4行目)を両方行削除したいのです。同様にイチゴをはさむ時が17行目以降にもあります。
その場合も同じ処理を繰返し行うようにしたいです。(全部で8000行ぐらいです)
11行目のイチゴのように上だけが空白行のときは、下の12行目にはテータがあるので10行目の空白行のみを行削除できるようにしたいのですが、構文がよくわからないので、どなたかご教授願います。
よろしくお願いいたします。
No.6ベストアンサー
- 回答日時:
No.4 の修正版です。
Sub Sample()
Dim 終 As Long
Dim 行 As Long
終 = Cells(Rows.Count, 7).End(xlUp).Row
For 行 = 終 To 2 Step -1
If Cells(行, 7).Value = "" Then
If Cells(行 - 1, 7).Value = "イチゴ" Then
Cells(行, 7).Value = "削除予定"
Else
If Cells(行 + 1, 7).Value = "イチゴ" Then
Cells(行, 7).Value = "削除予定"
End If
End If
End If
Next
If Cells(1, 7).Value = "" Then
If Cells(2, 7).Value = "イチゴ" Then
Cells(1, 7).Value = "削除予定"
End If
End If
For 行 = 終 To 1 Step -1
If Cells(行, 7).Value = "削除予定" Then
Rows(行).Delete Shift:=xlUp
End If
Next
End Sub
※ 一度目のループで削除予定の行に「削除予定」と書き込んでおいて、次のループで削除しています。ただ結果的に「イチゴに接している空白行」が残る可能性は有ります。もしかしたら No.4 の方が良いのかもしれません、お好きな方をお使い下さい。
No.8
- 回答日時:
No.4 と No.6 の違いですが、元が以下のような場合に 9行目を残すかどうかです。
No.4 では削除されます。
No.6 では残ります。結果だけ見るとイチゴの上の行が残ります。
● A B C D E F G
1 2/1 10:00 10 0 入荷 出荷 リンゴ
2
3 2/1 11:00 10 2 入荷 出荷 イチゴ
4
5 2/1 12:00 10 1 入荷 出荷 リンゴ
6
7 2/1 12:00 10 1 入荷 出荷 リンゴ
8 2/1 13:00 10 0 入荷 出荷 リンゴ
9
10
11 2/1 15:00 10 0 入荷 出荷 イチゴ
12 2/1 16:00 10 10 入荷 出荷 リンゴ
13 2/1 17:00 10 0 入荷 出荷 リンゴ
14 2/1 18:00 10 3 入荷 出荷 ミカン
15 2/1 19:00 10 1 入荷 出荷 リンゴ
16 2/1 19:30 10 0 入荷 出荷 イチゴ
17 2/1 20:00 10 5 入荷 出荷 リンゴ
度々のご回答ありがとうございます。
9行目の空白行については、リンゴの直下の空白行の解釈としていますので、11行目のイチゴの直上が削除されれば、良いです。その場合は、No.6になるのですね。
ありがとうございます。
No.4およびNo.6を早速、使わせて頂きます。
本当にに助かりました。ありがとうございます。
No.5
- 回答日時:
No.4 の補足
空白行が続いたときに誤動作しそうなので、訂正しますのでもう少しお待ち下さい。
No.4
- 回答日時:
こんな感じではいかがでしょうか?
------------------------------------------------------
Sub Sample()
Dim 終 As Long
Dim 行 As Long
終 = Cells(Rows.Count, 7).End(xlUp).Row
For 行 = 終 To 2 Step -1
If Cells(行, 7).Value = "" Then
If Cells(行 - 1, 7).Value = "イチゴ" Then
Rows(行).Delete Shift:=xlUp
Else
If Cells(行 + 1, 7).Value = "イチゴ" Then
Rows(行).Delete Shift:=xlUp
End If
End If
End If
Next
If Cells(1, 7).Value = "" Then
If Cells(2, 7).Value = "イチゴ" Then
Rows(行).Delete Shift:=xlUp
End If
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スケートボーダー、スノーボー...
-
ヒップホップであれダンスであ...
-
飯食うより面白いことしていま...
-
カローラスポーツで車中泊
-
例えばスポーツなどをするのは...
-
ゲームの才能ってやはり小学生...
-
宿命転換なんて出来るのでしょ...
-
ウオーキングと足ふみ運動
-
ケンカの強さって
-
ビッグモーターの除草剤散布問...
-
天才の足を引っ張ることしかで...
-
サバゲーを長年趣味にしている...
-
男の障害者はスポーツなどで稼...
-
就職氷河期世代のおじさんでも...
-
ベンチプレス100キロが一回挙げ...
-
知能指数90は下位何パーセント...
-
わたしゃ60になりますが暇にな...
-
自分よりも背の高い彼女
-
スポーツでのイップスって実力...
-
足はかなり速いのに、スポーツ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
例えばスポーツなどをするのは...
-
ディップス自重+荷重で90kgで10...
-
イケメンですか?
-
バンジージャンプとかで高いと...
-
縄跳びすると喉が痛い
-
ベンチプレス100キロが一回挙げ...
-
自分よりも背の高い彼女
-
飯食うより面白いことしていま...
-
ウオーキングと足ふみ運動
-
わたしゃ60になりますが暇にな...
-
ファブルがやっていた高層マン...
-
ボクシングやってる人って怖い...
-
スナックって楽しいの?
-
朝2時までサッカー見てて朝5時...
-
72の年寄です・・肉体労働をし...
-
知能指数90は下位何パーセント...
-
足はかなり速いのに、スポーツ...
-
私が小学生の頃の話です。 当時...
-
バンジージャンプやスカイダイ...
-
左と右で骨盤の広さが違う気が...
おすすめ情報
ご連絡ありがとうございます。
イチゴに接している空白行のみ削除し、(この場合は6行目は残す)ということになります。
よろしくおねがいいたします。
やはりマクロで処理をしたいと思います。
データ量があり、人間の目の作業ですとまちがえてしまうように思いますので、
マクロでの処理を希望しています。
ご回答ありがとうございます。
初歩的なことをお伺いしてしまいますが、構文の中の”終”および”行”には実際の値を当てはめるのでしょうか?