2013-07-09 35 views
0

我沒有使用VBA的經驗,但我在工作中被問到想出解決方案來解決這個問題。
我有了像這樣的數據表:在工作表中搜索列的值;如果發現複製前兩列值和列標題

名稱.....更改日期 ....... 13年1月1日...... 13年1月2日........ 01/03/13

Joe ............ 02/05/13 .............. .......末期

頂部日期值是應付帳單和日期值(1/05/13)的日期是賬單更改的日期。我需要搜索每個日期列(1/1-1/3)和單詞「遲到」(如果發現),我需要將名稱和日期更改和日期到期複製並粘貼到另一個工作表中。在這個例子中,我將複製值:

喬........ ......... 13年2月5日13年1月1日

在另外一個表。我希望提供任何幫助。

回答

3

您不需要爲此使用VBA。使用INDEX和MATCH函數查找延遲落後的位置。

稍後,您可以過濾以僅顯示行1/1-1/3中較晚的行。

適應,因爲你認爲合適,但這裏是基本的想法。

在「更改日期」和2013年1月1日之間插入一個列,並將其命名爲「到期日期」(現在是列c)。

如果C2單元格,輸入=IFERROR(INDEX($D$1:$F2,1,MATCH("Late",$D2:$F2,0)),"")

拖放在C列

This is what it should look like

+0

我正要提供了相同的答案...所以我投一點上來!保持簡單是規則 –

+0

沒錯。而越來越好的VBA意味着知道什麼時候使用它,但也不要使用它! –

+0

非常感謝您的幫助。這比我想象的要簡單得多,而且完美無缺。我正在使用相同的解決方案來解決我的下一個問題。 – user2533762

0

試試這個......在「C」中搜索單詞「Late」,如果它在那裏複製整行並粘貼到一個新的工作表中,它將循環所有你擁有的數據,在新工作表中粘貼所有行。它並不完全符合你的需求,但是一個很好的起點。

Dim j As Integer 
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("sheet1") 
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("sheet2") 

For j = 2 To ws1.Range("C65536").End(xlUp).row 
    If ws1.Cells(j, 2) = "late" Then ws1.Rows(j).Copy ws2.Rows(ws2.Cells(ws2.Rows.Count, 2).End(xlUp).row + 1) 
Next j 
相關問題