我希望你能幫忙。我有一段代碼,它工作得相當好。VBA代碼沒有更正所有行數據的日期
它的作用是使用命令按鈕打開一個對話框,該按鈕允許用戶選擇另一張Excel表格後,代碼將合併重複項並創建一個新的行,其中包含儘可能早的開始日期和最新的可能結束日期然後刪除重複的行。
所以在圖片1
我們可以看到,我們有多個開始日期和結束重複的行日期什麼的代碼應該做的是找到的最早開始日期和最晚結束日期的重複,並作出新線。
產品圖1.
PIC的2 你可以看到重複已被刪除和第一個重複的日期是從最早的開始日期和最晚結束日期可能提供Agnholt正確耶爾斯蒂恩起始日期2016年1月4日結束日期17/06/2016
但Breum雷夫其南轅北轍2016年4月5日13/01/2016
可以修改我的代碼來解決此問題。與往常一樣,任何幫助都不勝感激。
我的代碼如下。
CODE
Sub Open_Workbook_Dialog()
Dim strFileName As String
Dim wkb As Workbook
Dim wks As Worksheet
Dim lastRow As Long
Dim r As Long
MsgBox "Select Denmark File" '<--| txt box for prompt to pick a file
strFileName = Application.GetOpenFilename(FileFilter:="Excel Files,*.xl*;*.xm*") '<--| Opens the file window to allow selection
Set wkb = Application.Workbooks.Open(strFileName)
Set wks = ActiveWorkbook.Sheets(1)
lastRow = wks.UsedRange.Rows.Count
For r = lastRow To 3 Step -1
' Identify Duplicate
If wks.Cells(r, 1) = wks.Cells(r - 1, 1) _
And wks.Cells(r, 2) = wks.Cells(r - 1, 2) _
And wks.Cells(r, 3) = wks.Cells(r - 1, 3) _
And wks.Cells(r, 4) = wks.Cells(r - 1, 4) _
And wks.Cells(r, 5) = wks.Cells(r - 1, 5) _
And wks.Cells(r, 6) = wks.Cells(r - 1, 6) _
And wks.Cells(r, 7) = wks.Cells(r - 1, 7) Then
' Update Start Date on Previous Row
If wks.Cells(r, 8) < wks.Cells(r - 1, 8) Then
wks.Cells(r - 1, 8) = wks.Cells(r, 8)
End If
' Update End Date on Previous Row
If wks.Cells(r, 9) > wks.Cells(r - 1, 9) Then
wks.Cells(r - 1, 9) = wks.Cells(r, 9)
End If
' Delete Duplicate
Rows(r).Delete
End If
Next
End Sub
'4月5日/ 2016'是第四屆2016可以? – cyboashu
我假設列H和I中的值是文本,而不是日期。那是對的嗎? (因此,設置列H爲最低文本值,即''04/05/2016「'小於'」13/01/2016「'因爲'」0「'小於'」1「 '。) – YowE3K