2017-10-11 160 views
0

我試圖創建一個公式或vba代碼,它們將刪除它們之間的列B中的空白行並將它們連接到列D上。查看圖片以供參考。刪除數據之間的空白行

enter image description here

+2

一個公式不會工作,因爲它不會影響其他單元格。你的意思是一個子程序嗎?你試過什麼了?請記住,SO不是一個代碼編寫服務,而是一個針對特定編碼錯誤獲得有針對性幫助的論壇。 – nbayly

+1

@nbayly我想OP是想要公式駐留在列D和E中,分別從列A和B讀取數據,但忽略空白。 – JNevill

+0

@JNevill正好! –

回答

0

公式的方法。輸入此公式

=IFERROR(INDEX($B$1:$B$800, SMALL(IF(($B$1:$B$800)="", "", ROW($B$1:$B$800)-MIN(ROW($B$1:$B$800))+1), ROW(A1))),"") 

單元格E1並將其拖動到下方。您必須使用CTRL + SHIFT + ENTER來輸入它,因爲它是一個數組公式。

然後,在細胞D1輸入此公式

=IFERROR(INDIRECT("A"&IFERROR(SMALL(IF(($B$1:$B$800)="","",ROW($B$1:$B$800)-MIN(ROW($B$1:$B$800))+1),ROW(A1)),0)),"") 

並且也將它拖到底部。這也是數組公式,所以你需要使用CTRL + SHIFT + ENTER組合來確認它。

enter image description here

+0

它不適合我,我應該告訴你,在這些空白實際上公式是空白的,不知道這是否會影響公式。 –

+0

我調整了我的答案,包括公式值,它現在應該可以工作。 –

+0

我還有一個問題,如果示例1和示例2都具有相同的項目(如Dog)會怎麼樣?可以說,例1和例2只有一個項目,但具有相同的東西,它們如何區分兩者? –

0

試試這個,

Sub test() 
    Sheets("Sheet2").Range("D1:E200").Value = Sheets("Sheet1").Range("A1:B200").Value 
    Sheets("Sheet2").Range("D1:E200").SpecialCells(xlCellTypeBlanks).Delete xlShiftUp 
    Sheets("Sheet1").Range("D1:E200").Value = Sheets("Sheet2").Range("D1:E200").Value 
End Sub 
+0

我不能讓它向上或向右移動,它必須靜態。 –

+0

爲什麼不將數值粘貼到另一個工作表中,然後從那裏複製單元格。添加一行代碼。如果需要,可以從臨時工作表中刪除值或刪除工作表本身。 –

0

我已經使用這個代碼有點多次刪除報告中的空行。它將在列「A」中找到包含數據的最後一行,如果沒有任何內容,則刪除該行。

lastRow = Cells(Rows.Count, "A").End(xlUp).Row 

Do While lastRow >= 1 
If Cells(lastRow, 1).Value = "" Then Rows(lastRow).Delete 
lastRow = lastRow - 1 
Loop 
+0

無法刪除行。所有的行都必須保留。 –