- Katılım
- 15 Mart 2005
- Mesajlar
- 42,329
- Excel Vers. ve Dili
- Microsoft 365 Tr-En 64 Bit
Dediğim gibi kodları revize ettim. Son hallerini deneyiniz.
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Elinize emeğinize sağlık, işlem başarılı oldu gayet de sağlıklı. Çok teşekkürler @Korhan Ayhan bey.#14 ve #17 nolu mesajlarım da ki kodları tekrar revize ettim.
Son değişkenini tüm sayfadaki son satırı dikkate alacak şekilde düzenledim. Sanırım şimdi sorun çıkarmadan kullanabilirsiniz.
Option Explicit
Sub Test()
Dim S1 As Worksheet, Aranan As Variant, Son As Long
Dim Alan As Range, Veri As Range, Bul As Variant
Set S1 = Sheets("Sheet1")
Son = S1.Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
If Son > 1 Then
On Error Resume Next
Set Alan = Nothing
Set Alan = S1.Range("B2:B" & Son).SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
If Not Alan Is Nothing Then
For Each Veri In Alan
If S1.Cells(Veri.Row, "F") > 1 Then
Veri.Value = "Tekrarlayan"
Else
Veri.Value = "Devam"
End If
Next
MsgBox "İşleminiz tamamlanmıştır.", vbInformation
Else
MsgBox "Boş hücre bulunamadı!", vbExclamation
End If
End If
Set Alan = Nothing
Set S1 = Nothing
End Sub
Teşekkürler @Korhan Ayhan bey, emeğinize sağlık.Deneyiniz.
C++:Option Explicit Sub Test() Dim S1 As Worksheet, Aranan As Variant, Son As Long Dim Alan As Range, Veri As Range, Bul As Variant Set S1 = Sheets("Sheet1") Son = S1.Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row If Son > 1 Then On Error Resume Next Set Alan = Nothing Set Alan = S1.Range("B2:B" & Son).SpecialCells(xlCellTypeBlanks) On Error GoTo 0 If Not Alan Is Nothing Then For Each Veri In Alan If S1.Cells(Veri.Row, "F") > 1 Then Veri.Value = "Tekrarlayan" Else Veri.Value = "Devam" End If Next MsgBox "İşleminiz tamamlanmıştır.", vbInformation Else MsgBox "Boş hücre bulunamadı!", vbExclamation End If End If Set Alan = Nothing Set S1 = Nothing End Sub
Sub deneme()
Dim Son As Long, X As Long
Son = Cells(Rows.Count, "B").End(3).Row
For X = 2 To Son
If Cells(X, 2) = "" And Cells(X, 10) > 1 Then
Cells(X, 2) = "Yenilenen"
Else
Cells(X, 2) = "Devam"
End If
Next
End Sub
Şöyle açıklayım; 1-3, 3-7, 7 ve sonrası dediklerim günlerin aralığı.2. satırda ki veri için örnek hesaplama verirseniz makro yazılabilir. Zira ben hesaplama adımını anlamadım.
Option Explicit
Sub Test()
Dim Formul As Variant, Son As Long
Formul = Array("=SUMPRODUCT(((ROUNDUP(NOW()-G2:G1048576,0)>=1)*(ROUNDUP(NOW()-G2:G1048576,0)<=3)))", _
"=SUMPRODUCT(((ROUNDUP(NOW()-G2:G1048576,0)>3)*(ROUNDUP(NOW()-G2:G1048576,0)<=7)))", _
"=SUMPRODUCT(--(ROUNDUP(NOW()-G2:G1048576,0)>7)*(G2:G1048576<>""""))")
Son = Cells(Rows.Count, "G").End(3).Row
Range("B2") = Evaluate(Replace(Formul(0), 1048576, Son))
Range("C2") = Evaluate(Replace(Formul(1), 1048576, Son))
Range("D2") = Evaluate(Replace(Formul(2), 1048576, Son))
End Sub
Gayet sağlıklı ve tam da istediğim gibi çalışıyor kodunuz. Elinize emeğinize sağlık @Korhan Ayhan bey. Uğraştırdım sizi, çok teşekkürler.Deneyiniz.
C++:Option Explicit Sub Test() Dim Formul As Variant, Son As Long Formul = Array("=SUMPRODUCT(((ROUNDUP(NOW()-G2:G1048576,0)>=1)*(ROUNDUP(NOW()-G2:G1048576,0)<=3)))", _ "=SUMPRODUCT(((ROUNDUP(NOW()-G2:G1048576,0)>3)*(ROUNDUP(NOW()-G2:G1048576,0)<=7)))", _ "=SUMPRODUCT(--(ROUNDUP(NOW()-G2:G1048576,0)>7)*(G2:G1048576<>""""))") Son = Cells(Rows.Count, "G").End(3).Row Range("B2") = Evaluate(Replace(Formul(0), 1048576, Son)) Range("C2") = Evaluate(Replace(Formul(1), 1048576, Son)) Range("D2") = Evaluate(Replace(Formul(2), 1048576, Son)) End Sub
Sub Test()
Dim Formul As Variant, Son As Long
Formul = Array("=SUMPRODUCT(((ROUNDUP(NOW()-$G2:$G1048576,0)>=1)*(ROUNDUP(NOW()-$G2:$G1048576,0)<=3))*($H2:$H1048576=N$1))", _
"=SUMPRODUCT(((ROUNDUP(NOW()-$G2:$G1048576,0)>3)*(ROUNDUP(NOW()-$G2:$G1048576,0)<=7))*($H2:$H1048576=N$1))", _
"=SUMPRODUCT(--(ROUNDUP(NOW()-$G2:$G1048576,0)>7)*($G2:$G1048576<>"""")*($H2:$H1048576=N$1))")
Son = Cells(Rows.Count, "G").End(3).Row
Range("N2:S2") = Replace(Formul(0), 1048576, Son)
Range("N3:S3") = Replace(Formul(1), 1048576, Son)
Range("N4:S4") = Replace(Formul(2), 1048576, Son)
Range("N2:S4").Value = Range("N2:S4").Value
End Sub
Gayet sağlıklı ve tam da istediğim gibi çalışıyor. @Korhan Ayhan bey, emeğinize sağlık. Kolaylıklar dilerim.Uyguladığım çözümde I-J sütunlarını kullanmadım. Bu sebeple bu sütunları gerekmiyorsa silebilirsiniz.
C++:Sub Test() Dim Formul As Variant, Son As Long Formul = Array("=SUMPRODUCT(((ROUNDUP(NOW()-$G2:$G1048576,0)>=1)*(ROUNDUP(NOW()-$G2:$G1048576,0)<=3))*($H2:$H1048576=N$1))", _ "=SUMPRODUCT(((ROUNDUP(NOW()-$G2:$G1048576,0)>3)*(ROUNDUP(NOW()-$G2:$G1048576,0)<=7))*($H2:$H1048576=N$1))", _ "=SUMPRODUCT(--(ROUNDUP(NOW()-$G2:$G1048576,0)>7)*($G2:$G1048576<>"""")*($H2:$H1048576=N$1))") Son = Cells(Rows.Count, "G").End(3).Row Range("N2:S2") = Replace(Formul(0), 1048576, Son) Range("N3:S3") = Replace(Formul(1), 1048576, Son) Range("N4:S4") = Replace(Formul(2), 1048576, Son) Range("N2:S4").Value = Range("N2:S4").Value End Sub
Sub ID_yazdir()
Application.ScreenUpdating = False
Dim Son As Long, deg, i As Long, durum As Boolean, j As Integer
Son = Cells(Rows.Count, "A").End(xlUp).Row
deg = Array("*MASA*")
Application.ScreenUpdating = False
For i = Son To 1 Step -1
durum = False
For j = 0 To UBound(deg)
If Cells(i, "A") Like deg(j) Then durum = True
If durum = True Then Exit For
Next j
If durum = True Then Cells(i, 4) = Mid(Cells(i, 5).Value, 1, 5)
Next i
Application.ScreenUpdating = True
End Sub
Option Explicit
Sub ID_YAZ()
Dim Veri As Range
For Each Veri In Range("A2:A" & Cells(Rows.Count, 1).End(3).Row)
If Veri.Offset(, 3) = "" Then Veri.Offset(, 3) = Veri.Offset(, 4)
Select Case Veri.Value
Case "MASA"
If InStr(1, Veri.Offset(, 4), "-") > 0 Then
Veri.Offset(, 3) = Split(Veri.Offset(, 4), "-")(0)
End If
Case "LAPTOP"
If InStr(1, Veri.Offset(, 4), "-") > 0 Then
Veri.Offset(, 3) = Split(Veri.Offset(, 4), "(")(0)
End If
End Select
Next
MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
Teşekkürler @Korhan Ayhan bey. Sorunsuz çalıştı.Deneyiniz.
C++:Option Explicit Sub ID_YAZ() Dim Veri As Range For Each Veri In Range("A2:A" & Cells(Rows.Count, 1).End(3).Row) If Veri.Offset(, 3) = "" Then Veri.Offset(, 3) = Veri.Offset(, 4) Select Case Veri.Value Case "MASA" If InStr(1, Veri.Offset(, 4), "-") > 0 Then Veri.Offset(, 3) = Split(Veri.Offset(, 4), "-")(0) End If Case "LAPTOP" If InStr(1, Veri.Offset(, 4), "-") > 0 Then Veri.Offset(, 3) = Split(Veri.Offset(, 4), "(")(0) End If End Select Next MsgBox "İşleminiz tamamlanmıştır.", vbInformation End Sub