2012-06-19 42 views
2

問題:我有列A和列B.列A是可預測的,有數千列A行。 B列在每列A中有變化的行。例如,列A可能在列B中具有5行的值REQ_000021。這些都可以。我需要刪除的行是每列A只有一列B的行。Excel - 刪除兩列之間的所有一對一行

我知道這不是一個典型的事情,人們這樣做,所以我找不到一個VB腳本來做到這一點。 如果網站允許,我會發布圖片。首先需要15個代表點。

編輯:
我剛學會做換行符的計算器,所以這裏這個雲:

 
Col A Col B
----------------------------------
Scott Us
Germany
Spain
----------------------------------
brian US
----------------------------------
Mark US
----------------------------------
Italy
Tim Portugal
Ireland
----------------------------------

刪除布萊恩和馬克因爲有一行列A和B列中
離開斯科特和蒂姆獨自一人,因爲每列A列有多於一列的B列。請記住,Scott和Tim的列A是大的合併行。
這就是我想要完成的。

編輯:
每斯科特的答案,這是輸出:
我一些字幕標記爲清楚起見,爲別人誰在看這個。
output from Scott's solution


編輯: 這下面的VB腳本將刪除具有「刪除」 C列
我用它在Excel宏值的任何行。對於那些剛接觸宏的用戶,請在Excel 2007中啓用「開發者視圖」以訪問允許切換到VB屏幕的視圖。

 
Sub deleteDeleteString() 
Dim rng As Range, cell As Range, del As Range 
Dim strCellValue As String 
Set rng = Intersect(Range("C:C"), ActiveSheet.UsedRange) 
For Each cell In rng 

strCellValue = (cell.Value) 
'if DELETE is found in a cell in Column C greater than 0 times, delete it's entire row 
If InStr(strCellValue, "DELETE") > 0 Then 
If del Is Nothing Then 
Set del = cell 
Else: Set del = Union(del, cell) 
End If 
End If 
Next cell 
On Error Resume Next 
del.EntireRow.delete 
End Sub 
+1

這樣做的效果是因爲對於合併的單元格,Excel將讀取合併區域左上角最左側單元格中的值,而不管數據最初輸入的是哪個單元格。 –

回答

1

這是根據您對數據格式化方式進行編輯的新公式。

將在C1以下公式和向下運行的列得到行被刪除:

=IF(OR(ISBLANK(A1),ISBLANK(A2)),"","DELETE") 

您可能會或可能不希望取消合併列單元格的第一個,但它不該根據Excel處理合並單元格的規則,這並不重要。我在您提供的數據集上測試了這個數據集,並且它在合併或不合並單元格的情況下工作。

我沒有提供VBA解決方案,因爲您不需要在這裏。運行此公式,而不是在列C上爲「DELETE」篩選並刪除行。

+0

謝謝您的時間。 我更新了我的問題,以反映我現在在尋找更好的東西,現在我在stackoverflow上學到了更多的格式化選項。我必須使用一個

封閉標籤的表,以便發生間距。我還必須爲每個換行使用
標籤。 – joshpt

+0

是的,我可以作爲Excel宏輸入的VBA腳本將會很好。 – joshpt

+0

我根據您更新的問題更新了我的答案。這裏不需要VBA,所以我沒有走這條路。 –

相關問題