نوشته اصلی توسط
egafar
سلام وعرض ادب
من یک فایل اکسل دارم که حاوی 4 ستون است.ستون اول نام شرکت می باشد .ستون دوم سال مالی و ستون سوم تاریخ مصوب و ستون چهارم نوع گزارش است
هر شرکت می تواند دارای 5 نوع گزارش 3و6و9و12و مجمع باشد با تاریخ مصوب مختلف.لذا در ستون اول نام شرکت ممکن است 5 بار پشت سرهم تکرار شود ولی با تاریخ مصوب مختلف.من می خواهم جدید ترین گزارش مصوب (ستون سوم)برای نام شرکت انتخاب شود و بجای اینکه تک تک خودم هر ردیف را چک کرده و جدیدترین تاریخ گزارش مصوب را برای نام شرکت انتخاب کنم و بقیه را حذف کنم از تابعی استفاده کنم که خودش این کاررا برایم انجام دهد .ممنون می شوم راهنمایی بفرمایید.
سلام،
کد زیر رو روی فایلی که پیوست کردید اجرا کنید :
کد:
Sub M_E()
With Application
.ScreenUpdating = False
.EnableEvents = False
Columns(6).ClearContents
Columns(7).ClearContents
Columns(8).ClearContents
Range("f1") = "lvalues"
Range("g1") = "ulist"
lr = Cells(Rows.Count, 1).End(3).Row
Range("A2:A" & lr).Copy
Range("g2").PasteSpecial Paste:=xlPasteValues
.CutCopyMode = False
ActiveSheet.Range("$g$1:$g$" & lr).RemoveDuplicates Columns:=1, Header:=xlYes
lrg = Cells(Rows.Count, 7).End(3).Row
For g = 2 To lrg
For a = 2 To lr
If Range("g" & g) = Range("a" & a) Then
Cells(a, 6) = g
Range("h2").FormulaArray = "=TEXT(MAX(VALUE(SUBSTITUTE(INDIRECT(""c""&MATCH(" & Range("g" & g).Row & ",$f$2:$f$29,0)+1&"":""&""c""&MATCH(" & Range("g" & g).Row & ",$f$2:$f$29)+1),""/"",""""))),""####""""/""""##""""/""""##"")"
s = Range("h2").Text
If s <> Range("c" & a) Then Range("c" & a) = s: Range("c" & a).Interior.ColorIndex = 7
End If
Next a
Next g
Columns(6).ClearContents
Columns(7).ClearContents
Columns(8).ClearContents
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
یا حق.
علاقه مندی ها (Bookmarks)