yardımlarınızı bekliyorum. başını yapamadığım için gerisini getiremiyorum. bu yüzden yardımlarınızı bekliyorum. ekteki örnek uygulama gibi bir uygulama yapmak istiyorum. bunu nasıl yapabilirim. teşekkür ederim.
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
yardımlarınızı bekliyorum. başını yapamadığım için gerisini getiremiyorum. bu yüzden yardımlarınızı bekliyorum. ekteki örnek uygulama gibi bir uygulama yapmak istiyorum. bunu nasıl yapabilirim. teşekkür ederim.
Option Explicit
Sub Duruma_Göre_Aktar()
Dim U As Long, Satır As Long, SK As Worksheet
Dim SB As Worksheet, SD As Worksheet, Say As Double, Meslek_Say As Double
Set SK = Sheets("KAYNAK")
Set SB = Sheets("BİTMİŞ")
Set SD = Sheets("DEVAM EDİYOR")
SB.Range("A2:F" & SB.Range("F65536").End(3).Row + 1).ClearContents
SD.Range("A2:F" & SD.Range("F65536").End(3).Row + 1).ClearContents
For U = 2 To SK.Range("A65536").End(3).Row
If SK.Cells(U, "C") = "bitmiş" Then
Satır = SB.Range("A65536").End(3).Row + 1
Meslek_Say = WorksheetFunction.CountIf(SB.Range("B2:B65536"), SK.Cells(U, "B"))
If Meslek_Say < 1 Then
SB.Cells(Satır, "A") = SK.Cells(U, "A")
SB.Cells(Satır, "B") = SK.Cells(U, "B")
Say = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SB.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """bitmiş""))")
SB.Cells(Satır, "C") = Say
SB.Cells(Satır, "D") = SK.Cells(U, "E")
SB.Cells(Satır, "E") = SK.Cells(U, "F")
SB.Cells(Satır, "F") = SK.Cells(U, "G")
End If
ElseIf SK.Cells(U, "C") = "devam ediyor" Then
Satır = SD.Range("A65536").End(3).Row + 1
Meslek_Say = WorksheetFunction.CountIf(SD.Range("B2:B65536"), SK.Cells(U, "B"))
If Meslek_Say < 1 Then
SD.Cells(Satır, "A") = SK.Cells(U, "A")
SD.Cells(Satır, "B") = SK.Cells(U, "B")
Say = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SD.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """devam ediyor""))")
SD.Cells(Satır, "C") = Say
SD.Cells(Satır, "D") = SK.Cells(U, "E")
SD.Cells(Satır, "E") = SK.Cells(U, "F")
SD.Cells(Satır, "F") = SK.Cells(U, "G")
End If
End If
Next
MsgBox "İşleminiz tamamlanmıştır", vbInformation, "Sn : " & Application.UserName
End Sub
Merhaba;
şeklinde denermisiniz.Kod:Option Explicit Sub Duruma_Göre_Aktar() Dim U As Long, Satır As Long, SK As Worksheet Dim SB As Worksheet, SD As Worksheet, Say As Double, Meslek_Say As Double Set SK = Sheets("KAYNAK") Set SB = Sheets("BİTMİŞ") Set SD = Sheets("DEVAM EDİYOR") SB.Range("A2:F" & SB.Range("F65536").End(3).Row + 1).ClearContents SD.Range("A2:F" & SD.Range("F65536").End(3).Row + 1).ClearContents For U = 2 To SK.Range("A65536").End(3).Row If SK.Cells(U, "C") = "bitmiş" Then Satır = SB.Range("A65536").End(3).Row + 1 Meslek_Say = WorksheetFunction.CountIf(SB.Range("B2:B65536"), SK.Cells(U, "B")) If Meslek_Say < 1 Then SB.Cells(Satır, "A") = SK.Cells(U, "A") SB.Cells(Satır, "B") = SK.Cells(U, "B") Say = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SB.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """bitmiş""))") SB.Cells(Satır, "C") = Say SB.Cells(Satır, "D") = SK.Cells(U, "E") SB.Cells(Satır, "E") = SK.Cells(U, "F") SB.Cells(Satır, "F") = SK.Cells(U, "G") End If ElseIf SK.Cells(U, "C") = "devam ediyor" Then Satır = SD.Range("A65536").End(3).Row + 1 Meslek_Say = WorksheetFunction.CountIf(SD.Range("B2:B65536"), SK.Cells(U, "B")) If Meslek_Say < 1 Then SD.Cells(Satır, "A") = SK.Cells(U, "A") SD.Cells(Satır, "B") = SK.Cells(U, "B") Say = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SD.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """devam ediyor""))") SD.Cells(Satır, "C") = Say SD.Cells(Satır, "D") = SK.Cells(U, "E") SD.Cells(Satır, "E") = SK.Cells(U, "F") SD.Cells(Satır, "F") = SK.Cells(U, "G") End If End If Next MsgBox "İşleminiz tamamlanmıştır", vbInformation, "Sn : " & Application.UserName End Sub
Rica ederimteşekkür ederim. makro çalışıyor elinize sağlık komutları kısaca açıklayabilirmisiniz?
Option Explicit
Sub Duruma_Göre_Aktar()
Dim U As Long, Satır As Long, SK As Worksheet
Dim SB As Worksheet, SD As Worksheet, Say As Double, Meslek_Say As Double
Set SK = Sheets("KAYNAK") 'SK tanımı KAYNAK sayfası
Set SB = Sheets("BİTMİŞ") 'SB tanımı BİTMİŞ sayfası
Set SD = Sheets("DEVAM EDİYOR") 'SD tanımı DEVAM EDİYOR sayfası
SB.Range("A2:F" & SB.Range("F65536").End(3).Row + 1).ClearContents 'SB Sayfasının A2 satırından başlayıp F sütununda bulunan en son değere kadar sil
SD.Range("A2:F" & SD.Range("F65536").End(3).Row + 1).ClearContents 'SD Sayfasının A2 satırından başlayıp F sütununda bulunan en son değere kadar sil
For U = 2 To SK.Range("A65536").End(3).Row ' U değişkenli döngü için 2'den A sütununda ki son satırın değerine kadar dön
If SK.Cells(U, "C") = "bitmiş" Then ' Eğer SK sayfasının C sütunundaki U satırı eşitse "bitmiş" yazısına
Satır = SB.Range("A65536").End(3).Row + 1 ' Satır değişkeni için SB sayfasının A sütunundaki enson dolu olan değerine 1 ekle
Meslek_Say = WorksheetFunction.CountIf(SB.Range("B2:B65536"), SK.Cells(U, "B")) ' SB sayfasının B2 ile B65536'ıncı satır aralığında , SK sayfasının B sütununun U değeri
If Meslek_Say < 1 Then ' eğer meslek_say değişkeni 1'den küçük ise
SB.Cells(Satır, "A") = SK.Cells(U, "A") 'SB sayfasının A sütunundaki satır değişkenindeki hedefine = SK sayfasının A sütunundaki U değerini yaz
SB.Cells(Satır, "B") = SK.Cells(U, "B") 'SB sayfasının B sütunundaki satır değişkenindeki hedefine = SK sayfasının B sütunundaki U değerini yaz
Say = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SB.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """bitmiş""))") 'KAYNAK sayfasının B2 ile B65536 satır aralığı = SB sayfasının B sütunundaki U değeri yani MESLEK GRUBU)* KAYNAK sayfasının C2 ile C65536 satır aralığı "bitmiş" değerine eşit) yani değerler eşitse sayması için kullanılan dizi formülü
SB.Cells(Satır, "C") = Say ' SB sayfasının C sütununun satır değerine Say değişkenini yaz
SB.Cells(Satır, "D") = SK.Cells(U, "E") 'SB sayfasının D sütunundaki satır değişkenindeki hedefine = SK sayfasının E sütunundaki U değerini yaz
SB.Cells(Satır, "E") = SK.Cells(U, "F") 'SB sayfasının E sütunundaki satır değişkenindeki hedefine = SK sayfasının F sütunundaki U değerini yaz
SB.Cells(Satır, "F") = SK.Cells(U, "G") 'SB sayfasının F sütunundaki satır değişkenindeki hedefine = SK sayfasının G sütunundaki U değerini yaz
End If
'yukarıdaki açıklamalar gibi burada da aynı işlem devam ediyor.
ElseIf SK.Cells(U, "C") = "devam ediyor" Then ' değilse devam ediyor yazısı için devam et
Satır = SD.Range("A65536").End(3).Row + 1
Meslek_Say = WorksheetFunction.CountIf(SD.Range("B2:B65536"), SK.Cells(U, "B"))
If Meslek_Say < 1 Then
SD.Cells(Satır, "A") = SK.Cells(U, "A")
SD.Cells(Satır, "B") = SK.Cells(U, "B")
Say = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SD.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """devam ediyor""))")
SD.Cells(Satır, "C") = Say
SD.Cells(Satır, "D") = SK.Cells(U, "E")
SD.Cells(Satır, "E") = SK.Cells(U, "F")
SD.Cells(Satır, "F") = SK.Cells(U, "G")
End If
End If
Next
MsgBox "İşleminiz tamamlanmıştır", vbInformation, "Sn : " & Application.UserName
End Sub
Rica ederimDilimizin döndüğü kadarıyla yardımcı olalım.
Kod:Option Explicit Sub Duruma_Göre_Aktar() Dim U As Long, Satır As Long, SK As Worksheet Dim SB As Worksheet, SD As Worksheet, Say As Double, Meslek_Say As Double Set SK = Sheets("KAYNAK") 'SK tanımı KAYNAK sayfası Set SB = Sheets("BİTMİŞ") 'SB tanımı BİTMİŞ sayfası Set SD = Sheets("DEVAM EDİYOR") 'SD tanımı DEVAM EDİYOR sayfası SB.Range("A2:F" & SB.Range("F65536").End(3).Row + 1).ClearContents 'SB Sayfasının A2 satırından başlayıp F sütununda bulunan en son değere kadar sil SD.Range("A2:F" & SD.Range("F65536").End(3).Row + 1).ClearContents 'SD Sayfasının A2 satırından başlayıp F sütununda bulunan en son değere kadar sil For U = 2 To SK.Range("A65536").End(3).Row ' U değişkenli döngü için 2'den A sütununda ki son satırın değerine kadar dön If SK.Cells(U, "C") = "bitmiş" Then ' Eğer SK sayfasının C sütunundaki U satırı eşitse "bitmiş" yazısına Satır = SB.Range("A65536").End(3).Row + 1 ' Satır değişkeni için SB sayfasının A sütunundaki enson dolu olan değerine 1 ekle Meslek_Say = WorksheetFunction.CountIf(SB.Range("B2:B65536"), SK.Cells(U, "B")) ' SB sayfasının B2 ile B65536'ıncı satır aralığında , SK sayfasının B sütununun U değeri If Meslek_Say < 1 Then ' eğer meslek_say değişkeni 1'den küçük ise SB.Cells(Satır, "A") = SK.Cells(U, "A") 'SB sayfasının A sütunundaki satır değişkenindeki hedefine = SK sayfasının A sütunundaki U değerini yaz SB.Cells(Satır, "B") = SK.Cells(U, "B") 'SB sayfasının B sütunundaki satır değişkenindeki hedefine = SK sayfasının B sütunundaki U değerini yaz Say = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SB.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """bitmiş""))") 'KAYNAK sayfasının B2 ile B65536 satır aralığı = SB sayfasının B sütunundaki U değeri yani MESLEK GRUBU)* KAYNAK sayfasının C2 ile C65536 satır aralığı "bitmiş" değerine eşit) yani değerler eşitse sayması için kullanılan dizi formülü SB.Cells(Satır, "C") = Say ' SB sayfasının C sütununun satır değerine Say değişkenini yaz SB.Cells(Satır, "D") = SK.Cells(U, "E") 'SB sayfasının D sütunundaki satır değişkenindeki hedefine = SK sayfasının E sütunundaki U değerini yaz SB.Cells(Satır, "E") = SK.Cells(U, "F") 'SB sayfasının E sütunundaki satır değişkenindeki hedefine = SK sayfasının F sütunundaki U değerini yaz SB.Cells(Satır, "F") = SK.Cells(U, "G") 'SB sayfasının F sütunundaki satır değişkenindeki hedefine = SK sayfasının G sütunundaki U değerini yaz End If 'yukarıdaki açıklamalar gibi burada da aynı işlem devam ediyor. ElseIf SK.Cells(U, "C") = "devam ediyor" Then ' değilse devam ediyor yazısı için devam et Satır = SD.Range("A65536").End(3).Row + 1 Meslek_Say = WorksheetFunction.CountIf(SD.Range("B2:B65536"), SK.Cells(U, "B")) If Meslek_Say < 1 Then SD.Cells(Satır, "A") = SK.Cells(U, "A") SD.Cells(Satır, "B") = SK.Cells(U, "B") Say = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SD.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """devam ediyor""))") SD.Cells(Satır, "C") = Say SD.Cells(Satır, "D") = SK.Cells(U, "E") SD.Cells(Satır, "E") = SK.Cells(U, "F") SD.Cells(Satır, "F") = SK.Cells(U, "G") End If End If Next MsgBox "İşleminiz tamamlanmıştır", vbInformation, "Sn : " & Application.UserName End Sub
çok teşekkür ettim yardımlarınız için yalnız şöyle bir sorunum var kaynak sayfasındaki aynı meslekte olup koşullara göre diğer sayfalara attığında aynı meslekte olan kişilerin notları toplanmıyor bunu nasıl yapabiliriz?
şimdiden teşekkür ederim yardımınz için....
Option Explicit
Sub Duruma_Göre_Aktar()
Dim U As Long, Satır As Long, SK As Worksheet
Dim SB As Worksheet, SD As Worksheet, Say As Double, Meslek_Say As Double, Topla1 As Double
Set SK = Sheets("KAYNAK")
Set SB = Sheets("BİTMİŞ")
Set SD = Sheets("DEVAM EDİYOR")
SB.Range("A2:F" & SB.Range("F65536").End(3).Row + 1).ClearContents
SD.Range("A2:F" & SD.Range("F65536").End(3).Row + 1).ClearContents
For U = 2 To SK.Range("A65536").End(3).Row
If SK.Cells(U, "C") = "bitmiş" Then
Satır = SB.Range("A65536").End(3).Row + 1
Meslek_Say = WorksheetFunction.CountIf(SB.Range("B2:B65536"), SK.Cells(U, "B"))
If Meslek_Say < 1 Then
SB.Cells(Satır, "A") = SK.Cells(U, "A")
SB.Cells(Satır, "B") = SK.Cells(U, "B")
Say = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SB.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """bitmiş""))")
[COLOR=red]Topla1 = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SB.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """bitmiş"")* (KAYNAK!E2:E65536))")[/COLOR]
[COLOR=red] Topla2 = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SB.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """bitmiş"")* (KAYNAK!F2:F65536))")[/COLOR]
[COLOR=red] Topla3 = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SB.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """bitmiş"")* (KAYNAK!G2:G65536))")[/COLOR]
SB.Cells(Satır, "C") = Say
[COLOR=red]SB.Cells(Satır, "D") = Topla1[/COLOR]
[COLOR=red] SB.Cells(Satır, "E") = Topla2[/COLOR]
[COLOR=red] SB.Cells(Satır, "F") = Topla3[/COLOR]
End If
ElseIf SK.Cells(U, "C") = "devam ediyor" Then
Satır = SD.Range("A65536").End(3).Row + 1
Meslek_Say = WorksheetFunction.CountIf(SD.Range("B2:B65536"), SK.Cells(U, "B"))
If Meslek_Say < 1 Then
SD.Cells(Satır, "A") = SK.Cells(U, "A")
SD.Cells(Satır, "B") = SK.Cells(U, "B")
Say = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SD.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """devam ediyor""))")
[COLOR=red]Topla1 = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SD.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """devam ediyor"")* (KAYNAK!E2:E65536))")[/COLOR]
[COLOR=red] Topla2 = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SD.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """devam ediyor"")* (KAYNAK!F2:F65536))")[/COLOR]
[COLOR=red] Topla3 = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SD.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """devam ediyor"")* (KAYNAK!G2:G65536))")[/COLOR]
SD.Cells(Satır, "C") = Say
[COLOR=red]SD.Cells(Satır, "D") = Topla1[/COLOR]
[COLOR=red] SD.Cells(Satır, "E") = Topla2[/COLOR]
[COLOR=red] SD.Cells(Satır, "F") = Topla3[/COLOR]
End If
End If
Next
MsgBox "İşleminiz tamamlanmıştır", vbInformation, "Sn : " & Application.UserName
End Sub
Kod:Option Explicit Sub Duruma_Göre_Aktar() Dim U As Long, Satır As Long, SK As Worksheet Dim SB As Worksheet, SD As Worksheet, Say As Double, Meslek_Say As Double, Topla1 As Double Set SK = Sheets("KAYNAK") Set SB = Sheets("BİTMİŞ") Set SD = Sheets("DEVAM EDİYOR") SB.Range("A2:F" & SB.Range("F65536").End(3).Row + 1).ClearContents SD.Range("A2:F" & SD.Range("F65536").End(3).Row + 1).ClearContents For U = 2 To SK.Range("A65536").End(3).Row If SK.Cells(U, "C") = "bitmiş" Then Satır = SB.Range("A65536").End(3).Row + 1 Meslek_Say = WorksheetFunction.CountIf(SB.Range("B2:B65536"), SK.Cells(U, "B")) If Meslek_Say < 1 Then SB.Cells(Satır, "A") = SK.Cells(U, "A") SB.Cells(Satır, "B") = SK.Cells(U, "B") Say = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SB.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """bitmiş""))") [COLOR=red]Topla1 = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SB.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """bitmiş"")* (KAYNAK!E2:E65536))") Topla2 = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SB.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """bitmiş"")* (KAYNAK!F2:F65536))") Topla3 = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SB.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """bitmiş"")* (KAYNAK!G2:G65536))") [/COLOR] SB.Cells(Satır, "C") = Say [COLOR=red]SB.Cells(Satır, "D") = Topla1 SB.Cells(Satır, "E") = Topla2 SB.Cells(Satır, "F") = Topla3 [/COLOR] End If ElseIf SK.Cells(U, "C") = "devam ediyor" Then Satır = SD.Range("A65536").End(3).Row + 1 Meslek_Say = WorksheetFunction.CountIf(SD.Range("B2:B65536"), SK.Cells(U, "B")) If Meslek_Say < 1 Then SD.Cells(Satır, "A") = SK.Cells(U, "A") SD.Cells(Satır, "B") = SK.Cells(U, "B") Say = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SD.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """devam ediyor""))") [COLOR=red]Topla1 = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SD.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """devam ediyor"")* (KAYNAK!E2:E65536))") Topla2 = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SD.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """devam ediyor"")* (KAYNAK!F2:F65536))") Topla3 = Evaluate("Sum((KAYNAK!B2:B65536" & "=" & SD.Cells(U, 2).Address & ")*(KAYNAK!C2:C65536" & "=" & """devam ediyor"")* (KAYNAK!G2:G65536))") [/COLOR] SD.Cells(Satır, "C") = Say [COLOR=red]SD.Cells(Satır, "D") = Topla1 SD.Cells(Satır, "E") = Topla2 SD.Cells(Satır, "F") = Topla3[/COLOR] End If End If Next MsgBox "İşleminiz tamamlanmıştır", vbInformation, "Sn : " & Application.UserName End Sub
şeklinde kopyalayın.
ilginiz için teşekkür ederim.
toplama işleminde hata veriyor. "Variable not defined" diye bir hata veriyor...
Dim Topla1 As Double, Topla2 As Double, Topla3 As Double
Merhaba;
Değişkenleri tanımlamadığım için o hatayı almışsınız.
en üste bu kodu kopyalayın.Kod:Dim Topla1 As Double, Topla2 As Double, Topla3 As Double
#7 nolu eki yeniledim.