如果删除整个列,如果它是空的

我有列第1行是..

IF Column C doesn't have data in entire column then delete CDEF IF Column D doesn't have data in entire column then delete DEF IF Column E doesn't have data in entire column then delete EF IF Column F doesn't have data in entire column then delete F 

标题NN的方式也一样

 IF Column G doesn't have data in entire column then delete GHIJKLMN IF Column H doesn't have data in entire column then delete HIJKLMN IF Column I doesn't have data in entire column then delete IJKLMN IF Column J doesn't have data in entire column then delete JKLMN IF Column K doesn't have data in entire column then delete KLMN IF Column L doesn't have data in entire column then delete LMN IF Column M doesn't have data in entire column then delete MN IF Column N doesn't have data in entire column then delete N ABCDEFGHIJKLMNOPQR TI1 TE2 TT1 TT2 TT3 TT4 NN1 NN2 NN3 NN4 NN5 NN6 NN7 NN8 CMT K2 K3 BLAH BLAH 

我会通过添加额外的行来完成这件事(你可以随时隐藏它)。

假设你的标题在第1行,然后在第2行添加一个额外的(帮助者)行。

  • 在C2中,input下面的公式(用适当的值代替C30 ):

    =COUNTA(C3:C30)

  • 在D2中,input以下公式:

    =IF(C2=0,0,COUNTA(D3:D30))

  • 将该公式拖到E&F

  • 在G中重做C的公式

  • 在H中重做D的公式并拖到N上

等等

现在只需要编写一个非常简单的macros来删除row2的值为0的列。

这似乎是对我来说最简单的方法,但有很多其他的方法。

希望这可以帮助!!

这个macros你的第一个位 – 第二个阶段将非常相似。

你需要把5秒钟的时间变长。

一般不喜欢GoTo但是我在这个代码中使用了它。

 Sub firstbit() If Excel.WorksheetFunction.CountA(ActiveSheet.Range("C2:C5")) = 0 Then Excel.ActiveSheet.Range("C2:F5").clearcontents GoTo FirstStageComplete: End If If Excel.WorksheetFunction.CountA(ActiveSheet.Range("D2:D5")) = 0 Then Excel.ActiveSheet.Range("D2:F5").clearcontents GoTo FirstStageComplete: End If If Excel.WorksheetFunction.CountA(ActiveSheet.Range("E2:E5")) = 0 Then Excel.ActiveSheet.Range("E2:F5").clearcontents GoTo FirstStageComplete: End If If Excel.WorksheetFunction.CountA(ActiveSheet.Range("F2:F5")) = 0 Then Excel.ActiveSheet.Range("F2:F5").clearcontents End If FirstStageComplete: End Sub