[[20230202104730]] 『VBAでセルの削除を行いたい』(イチゴパフェ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAでセルの削除を行いたい』(イチゴパフェ)

F列にブランクのセルがある場合に
指定範囲(C列からF列)のセルの削除を行いたい
セルの削除後⇒上方向にシフトを行う

また、この削除する範囲も指定する事は可能でしょうか?

1・2行目はタイトルなどに使用
3行目から50行目ぐらいまで表があり
また、60行目ぐらいから別の表がある為です。

C列が3行目から下にCTRL+↓をしたところが表の最終行になります。
それ以降は別の表になる為セルの削除を行いたくありません。

普段は目検で行っています、自動でできれば結構楽になるので…

宜しくお願いします。

< 使用 Excel:Microsoft365、使用 OS:Windows10 >


確認ですが、
 >セルの削除後⇒上方向にシフトを行う
これはF列の空白セルがあった行のうち、C列からF列だけ削除して上に詰めたいということですか?
それとも、行全体を削除でしょうか?
(フォーキー) 2023/02/02(木) 11:07:19

 >セルの削除後⇒上方向にシフトを行う
C列からF列だけ削除ですね。すみません。
(フォーキー) 2023/02/02(木) 11:10:21

フォーキーさん、返信ありがとうございます。
そうですね、C列からF列だけ削除です
(イチゴパフェ) 2023/02/02(木) 11:42:12

オートフィルタで絞り込んで一気にやろうとしたんですが、
フィルタ状態だと行全体しか削除できないみたいですね(たぶん)

 Sub test()
     Dim i As Long
     For i = Range("A1").CurrentRegion.Rows.Count To 3 Step -1
         If Cells(i, "F") = "" Then
             Cells(i, "F").Offset(, -3).Resize(, 4).Delete shift:=xlUp
         End If
     Next
 End Sub

    |[A]    |[B]    |[C]    |[D]    |[E]    |[F]    
 [1]|見出し1|見出し2|見出し3|見出し4|見出し5|見出し6
 [2]|見出し1|見出し2|見出し3|見出し4|見出し5|見出し6
 [3]|      1|      1|      1|      1|      1|      1
 [4]|      2|      2|      2|      2|      2|      2
 [5]|      3|      3|      3|      3|      3|      
 [6]|      4|      4|      4|      4|      4|      4
 [7]|      5|      5|      5|      5|      5|      5
 [8]|      6|      6|      6|      6|      6|      
 [9]|      7|      7|      7|      7|      7|      7

 結果図

    |[A]    |[B]    |[C]    |[D]    |[E]    |[F]    
 [1]|見出し1|見出し2|見出し3|見出し4|見出し5|見出し6
 [2]|見出し1|見出し2|見出し3|見出し4|見出し5|見出し6
 [3]|      1|      1|      1|      1|      1|      1
 [4]|      2|      2|      2|      2|      2|      2
 [5]|      3|      3|      4|      4|      4|      4
 [6]|      4|      4|      5|      5|      5|      5
 [7]|      5|      5|      7|      7|      7|      7
 [8]|      6|      6|       |       |       |       
 [9]|      7|      7|       |       |       |    
 11:49修正  
(フォーキー) 2023/02/02(木) 11:45:39

■1
>F列にブランクのセルがある場合
純粋なブランクセルという理解でよいですか?

■2
>C列が3行目から下にCTRL+↓をしたところが表の最終行になります。
ということはC列には歯抜けがなく、かつ、少なくとも3〜4行目までは表のデータ範囲と解釈してよいですね。

■3
「■1」「■2」いずれもYESならば、↓のようなアプローチでもよいと思います。

    Sub 研究用()
        Stop 'ブレークポイントの代わり
        Dim ブランクセル As Range
        Dim 最終行 As Long

        With ActiveSheet
            最終行 = .Range("C3").End(xlDown).Row
            On Error Resume Next
            Set ブランクセル = .Range("F3:F" & 最終行).SpecialCells(xlCellTypeBlanks)
            On Error GoTo 0

            If Not ブランクセル Is Nothing Then
                Intersect(ブランクセル.EntireRow, .Range("C:F")).Delete shift:=xlUp
            End If
        End With
    End Sub

■4
>また、この削除する範囲も指定する事は可能でしょうか?
質問がよくわかりませんが、【列】を指定したいということならば、上記のコードをよく見て、どこで「C〜F列」を指定してるか研究されてみてはいかがでしょうか。

(もこな2) 2023/02/02(木) 12:33:37


もこな2さん返信ありがとうございます。
F列のブランクセルは、VLOOCKした後の空白は入ってないけど
セルでF2などを押すと本当ノ?ブランクになる状態です。
何て言えばいいのか…
下記の様な表になります。
レイアウト忘れてました。
3行目から始まり33行目まで表になります。
A列とB列はVLOOCKするのに使用している為、表とは関係ありません。
F列の伝票行数が空欄の行を削除したいので現在は手動で行っています。
説明が雑すぎました。
申し訳御座いません。

     |[A]         |[B]         |[C]                           |[D]   |[E]       |[F]     
 [1] |            |            |部署別集計     66期1月|      |          |        
 [2] |            |            |                              |      |          |        
 [3] |CON1        |CON2        |部門                          |作成者|作成者名  |伝票行数
 [4] |M119507 集計|M419902 集計|M1                            | 19507|PI200     |     167
 [5] |M121602 集計|M441001 集計|M1                            | 21602|PI201     |      90
 [6] |M122107 集計|M422101 集計|M1                            | 22107|PI202     |      30
 [7] |M120403 集計|M419512 集計|M1                            | 20403|PI203     |      37
 [8] |M163166 集計|M419807 集計|M1                            | 63166|PI204     |      38
 [9] |M119304 集計|M420303 集計|M1                            | 19304|PI205     |        
 [10]|M120915 集計|M419606 集計|M1                            | 20915|PI206     |        
 [11]|M120914 集計|M420414 集計|M1                            | 20914|PI207     |        
 [12]|M119312 集計|M419901 集計|M1                            | 19312|PI208     |        
 [13]|M120407 集計|M419507 集計|M1                            | 20407|PI209     |        
 [14]|M119902 集計|M418902 集計|M1                            | 19902|PI210     |        
 [15]|M119606 集計|M419206 集計|M1                            | 19606|PI211     |        
 [16]|M120414 集計|M420314 集計|M1                            | 20414|PI212     |       3
 [17]|M122002 集計|M420908 集計|M1                            | 22002|PI213     |        
 [18]|M119206 集計|M441303 集計|M1                            | 19206|PI214     |       2
 [19]|M120314 集計|M441511 集計|M1                            | 20314|PI215     |     540
 [20]|M120908 集計|M421905 集計|M1                            | 20908|PI216     |     701
 [21]|M141303 集計|M4PI300 集計|M1                            | 41303|PI217     |     820
 [22]|M141511 集計|M4PI301 集計|M1                            | 41511|PI218     |     656
 [23]|M121905 集計|M4PI302 集計|M1                            | 21905|PI219     |     612
 [24]|M1PI300 集計|M4PI303 集計|M1                            |PI300 |PI300|      35
 [25]|M1PI301 集計|M4PI304 集計|M1                            |PI301 |PI301|     191
 [26]|M1PI302 集計|M4PI305 集計|M1                            |PI302 |PI302|        
 [27]|M1PI303 集計|M4PI306 集計|M1                            |PI303 |PI303|     150
 [28]|M1PI304 集計|M4PI307 集計|M1                            |PI304 |PI304|     299
 [29]|M1PI305 集計|M4PI308 集計|M1                            |PI305 |PI305|     174
 [30]|M1PI306 集計|M4PI309 集計|M1                            |PI306 |PI306|     437
 [31]|M1PI307 集計|M921705 集計|M1                            |PI307 |PI307|        
 [32]|M1PI308 集計|M921706 集計|M1                            |PI308 |PI308|      45
 [33]|M1PI309 集計|M918801 集計|M1                            |PI309 |PI309|        
 [34]|            |MGPI302 集計|                              |      |          |        
 [35]|            |MGPI303 集計|                              |      |          |        
 [36]|M1 集計     |MGPI304 集計|部署                          |行数  |比率      |比率2   
 [37]|            |MGPI305 集計|1部合計                      |      |-         |        
 [38]|            |MGPI306 集計|支援部                        |  3331|          |        
 [39]|            |MGPI307 集計|TC                          |  1331|          |        
 [40]|            |MGPI308 集計|パートナー                    |   365|          |        
 [41]|            |MGPI309 集計|                              |      |          |        
 [42]|M2 集計     |MK19901 集計|部署                          |行数  |比率      |比率2   
 [43]|            |MK19312 集計|2部合計                      |      |-         |        
 [44]|            |MK19212 集計|支援部                        |#REF! |          |        
 [45]|            |MK18902 集計|TC                          |#REF! |          |        
 [46]|            |ZK19606 集計|パートナー                    |#REF! |          |        
 [47]|            |ZK20407 集計|                              |      |          |        
 [48]|            |ZK22002 集計|部署                          |行数  |比率      |比率2   
 [49]|            |ZK20414 集計|2部合計                       |      |-         |        
 [50]|            |            |支援部                        |#REF! |          |        
 [51]|            |            |TC                          |#REF! |          |        
 [52]|            |            |パートナー                    |#REF! |          |        
 [53]|            |MK 集計     |                              |      |          |        
 [54]|            |            |                              |      |          |        
 [55]|            |            |                              |      |          |        
 [56]|M4 集計     |            |部署                          |行数  |比率      |比率2   
 [57]|            |            |3部合計                      |      |-         |        
 [58]|            |            |支援部                        |#REF! |          |        
 [59]|            |ZK 集計     |TC                          |#REF! |          |        
 [60]|            |            |パートナー                    |#REF! |          |        
 [61]|            |            |                              |      |          |        
 [62]|MG 集計     |            |部署                          |行数  |比率      |比率2   
 [63]|            |            |5部合計                      |      |-         |        
 [64]|            |            |支援部                        |#REF! |          |        
 [65]|            |総計        |TC                          |#REF! |          |        
 [66]|            |            |パートナー                    |#REF! |          |        
 [67]|            |            |                              |      |          |        
 [68]|            |            |部署                          |行数  |比率      |比率2   
 [69]|            |            |5部合計                       |      |-         |        
 [70]|            |            |支援部                        |#REF! |          |        
 [71]|            |            |TC                          |#REF! |          |        
 [72]|            |            |パートナー                    |#REF! |          |        
 [73]|            |            |                              |      |          |        
 [74]|            |            |                              |      |          |        
 [75]|M9 集計     |            |部署                          |行数  |比率      |比率2   
 [76]|            |            |近畿大阪合計                  |      |-         |        
 [77]|            |            |支援部                        |#REF! |          |        
 [78]|            |            |TC                          |     0|          |        
 [79]|            |            |パートナー                    |#REF! |          |        
(イチゴパフェ) 2023/02/02(木) 14:36:20

フォーキーさんありがとうございます。
すみません。
説明が駄目すぎて...
D列は、個人名だったので無理やり番号にしたので気にしないで下さい。
(イチゴパフェ) 2023/02/02(木) 14:39:22

解決したんですか?
提示されているレイアウトであれば、回答されたコードで希望通りになるとおもいますが。
(私のはループで1件ごと処理しているので、もこな2さんの方法がおすすめです)

レイアウトに関しては、管理面からするとAB列は別シートにするとか、
同一シート内にするのであればC列を空けてD列から表を作成してそれぞれテーブルにしたほうが良いと思います。
(フォーキー) 2023/02/02(木) 14:50:04


alt+F8でできそうな気もしますが
みなさん親切ですね
(暇人) 2023/02/02(木) 15:47:23

フォーキーさんすみません、なんか素通りしている感じになってます。
特にエラーは出ないのですがないも起きてない感じです。
(イチゴパフェ) 2023/02/02(木) 16:54:41

提示されているレイアウトですが、空白セルとして表示されている部分にタブスペースが入ってますけど、本来のデータにも入っているんですか?
なら動くはずないと思いますが。(空白がないので)
(フォーキー) 2023/02/02(木) 17:10:56

これまた横からですが。
>なんか素通りしている感じになってます。
>特にエラーは出ないのですがないも起きてない感じ

前にもコメントしましたが、ちゃんと【ステップ実行】するなどして、自己検証してみましたか?
また、どういう条件で処理分岐することになっていて、条件を"満たさなかった場合"どうなるか、理解できてますか?
コメントを拝見すると、単純に実行した結果でしか確認されていないような感じを受けますが…

(もこな2) 2023/02/02(木) 21:05:43


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.