如果列是空的,而不是第一个单元格

底部的代码检查单元格(1,b)是否为空,然后复制到一列中,并对其上的列执行文本操作。 不过,我希望它检查列b是空的,而不是只是第一个单元格。 它应该是直截了当的,但是我所做的任何改变都没有奏效。 比如我试过了:

If Excel.WorksheetFunction.CountBlank(Excel.Sheets("TOP LINE").Columns(b)) <> 1048576 Then b = b+1 

代替:

 If Cells(1, b) <> "" Then b = b + 1 

请帮忙!

 For a = 2 To 60 If Excel.WorksheetFunction.CountBlank(Excel.Sheets("Paste In").Columns(a)) <> 1048576 Then Excel.Sheets("Paste In").Columns(a).Copy b = Excel.Sheets("TOP LINE").Cells(1, Columns.Count).End(Excel.xlToLeft).column Excel.Sheets("TOP LINE").Select If Cells(1, b) <> "" Then b = b + 1 Excel.Sheets("TOP LINE").Columns(b).EntireColumn.Select Excel.ActiveSheet.Paste Excel.Application.CutCopyMode = False Selection.TextToColumns Destination:=Cells(1, b), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _ Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _ :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _ Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True End If 

下一个

您可以使用工作表函数来计算列索引为a的列中的非空单元格:

If Application.WorksheetFunction.CountA(Excel.Sheets("Paste In").Columns(a)) > 0 Then

你的代码中同时包含一个b,请使用以下代码:

第2行( If Excel.WorksheetFunction.CountBlank(Excel.Sheets("Paste In").Columns(a)) <> 1048576 Then变成:

If Application.WorksheetFunction.CountA(Excel.Sheets("Paste In").Columns(a)) > 0 Then

第6行( If Cells(1, b) <> "" Then b = b + 1 )变成:

If Application.WorksheetFunction.CountA(Excel.Sheets("TOP LINE").Columns(b)) > 0 Then