Sorgulama kriterini değiştirilince hatalı sonuçlar veriyor

Katılım
28 Ocak 2008
Mesajlar
260
Excel Vers. ve Dili
2003
Arkadaşlar Ekteki dosyada sorgulama kriterini değiştirince hata veriyor neden olabilir ?

ve kodları kendime uyarladığımda çok ağırlaştı alternatif koda ihtiyacım var yada mevcut kodda revizyon yaparak nasıl daha hızlı çalışır hale getirebiliriz.
 

Ekli dosyalar

Son düzenleme:
Katılım
28 Ocak 2008
Mesajlar
260
Excel Vers. ve Dili
2003
neden kimse ilgilenmiyor ? eskiden herkes yardım ederdi birbirine
Şimdi ne oldu 6 günden beridir değişik şekillerde soruyorum bu konuyu bir cevap almak dahi mümkün olmadı, Site yardımlaşma ruhunu mu kaybetti.

Sorunum çözülsün demiyorum, en azından bir öneri yada eskiden olduğu gibi " Site içinde araştırma yapın" gibi uyaran dahi yok.. :(
 
Katılım
28 Ocak 2008
Mesajlar
260
Excel Vers. ve Dili
2003
eklediğim dosyaya bağlamaya çalıştığım macroyu bağlamadan dosyayı eklemşim bunu düzelltim ilgilenmeniz ricasıyla arkadaşlar..
 
Katılım
27 Temmuz 2004
Mesajlar
719
Excel Vers. ve Dili
Excel 2003 Tr
Kardeşim bakıyorum, ama belli bir seviyeye gelmiş bir çalışmayı anlamak bile uzun sürüyor, kodun yavaş çalışması normal yaklaşık 1000 süzme yapıyor çünkü, biraz zaman ver bana
 
Katılım
28 Ocak 2008
Mesajlar
260
Excel Vers. ve Dili
2003
Kardeşim bakıyorum, ama belli bir seviyeye gelmiş bir çalışmayı anlamak bile uzun sürüyor, kodun yavaş çalışması normal yaklaşık 1000 süzme yapıyor çünkü, biraz zaman ver bana
ilgin için saol, peki abi yeni bir kod yazsak ?

mantık şöyle abi, bilgiler sayfasında list a1:a3:a4:a5:a6 satırındaki firmaların personellerini Transay masraf sayfasında belirtilen servise uyan personelleri departman mevcudunu çıkartıyor.

yani: xxxx firmasında kadıköy servisini kullanan bilgi işlem departmanında kaç kişi var..
bu kodun çalışması için TOTAL sütununda rakam olmak zorunda



diğer sorgulama ise Armed sütunu (transay masraf sayfasındaki) buradaki mantıkta kadıköy servisini kullanan (departman gözetmeksizin) kaç personel var ise onun mevcudunu vermek.


fakat ben kendime uyarladığımda Armed ismini zartzurt a.ş olarak değiştirdiğimde (kodlarda,bilgiler sayfasında ve List sayfasındada zartzurt a.ş. olarak değiştiriyorum) kodlar hatalı sonuç veriyor..
 
Son düzenleme:
Katılım
28 Ocak 2008
Mesajlar
260
Excel Vers. ve Dili
2003
Janveljan, bu sorunu çözersek (inşallah) bir sorum daha olacak mümkünse hazır seni bulmuşken :)

oda şu;

Örnek: (B5 hücresinde % ile belirtilen her satırda yapılacak) C5:R5 arsında
her departmanın temsil eden personelin % bulmak
C5 yazdığım formül :EĞER(C3>0;(C3/TOPLA($C$3:$R$3)*100);"0")
C6 için ise; EĞER(C5>0;$S$3*C5/100;" ")

bunları tüm ilgili satırlara nasıl kod ile yaptırırız ? kodları F2 ile macroya aldırıyorum ama neticede yine formül ve ağır çalışmasını istemiyorum
 
Katılım
27 Temmuz 2004
Mesajlar
719
Excel Vers. ve Dili
Excel 2003 Tr
O işler basit kardeş bir iki döngüyle yapılabilecek şeyler, şimdilik sen formülle yap. Bir formülü yazarken makro kaydet yöntemini kullanırsan zaten arkada nasıl bir kod kullanıldığı gözüküyor uygun şekilde döngüye sokarsan formüller istediğin yere yazılır.
 
Katılım
27 Temmuz 2004
Mesajlar
719
Excel Vers. ve Dili
Excel 2003 Tr
Transay Masraf sayfasında DEPO SEVKİYAT ile ilgili sütun yok unutuldu mu? yoksa bilerek mi konmadı.
 
Katılım
28 Ocak 2008
Mesajlar
260
Excel Vers. ve Dili
2003
Tamamdır kardeşim kodlardaki hatayı düzelttim, incele görüşelim.

Eyvallah janveljan, süper fakat abijim çok ağır çalışmasını nasıl çözeriz alternatif kod yazma imkanımız yok mu ? bir de macronun ağır çalışmasını bir nebze engellemek için S sütunundaki değer "0" ve "0" dan küçükse kodların o satırda çalışmamasını sağlarsak daha hafifletmiş oluruz diye düşünüyorum...

ama yinede alternatif kod yazma imkanımız var ise süper olur.....

Emeğine sağlık..
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,738
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Aşağıdaki kodu denermisiniz. Kodun sağlıklı çalışması için "Bilgiler" isimli sayfanın A sütunundaki kelimelerin sonundaki boşluk karakterlerini kaldırın.

Kod:
Option Explicit
 
Sub TOPLA_AKTAR()
    Dim S1 As Worksheet, S2 As Worksheet
    Dim X As Long, Y As Long, Z As Integer
    Dim BUL As Range
    Dim ADRES As String
    Set S1 = Sheets("Bilgiler")
    Set S2 = Sheets("Transay Masraf")
 
    For X = 3 To S2.[A65536].End(3).Row Step 4
    S2.Range("C" & X & ":R" & X).ClearContents
    Next
    For Y = 3 To S2.[A65536].End(3).Row Step 4
    If S2.Cells(Y, "S") > 0 Then
    Set BUL = S1.[GY:GY].Find(S2.Cells(Y, 1))
    If Not BUL Is Nothing Then
    ADRES = BUL.Address
    Do
    S2.Cells(Y, "R") = Evaluate("=SUMPRODUCT((Bilgiler!GY2:GY5000=""" & S2.Cells(Y, "A") & """)*(Bilgiler!A2:A5000=""" & S2.Cells(2, "R") & """))")
 
    For Z = 3 To 17
    If Trim(S1.Cells(BUL.Row, "K")) = Trim(S2.Cells(2, Z)) And Trim(S1.Cells(BUL.Row, "A")) = Trim(S2.[R2]) Then
    S2.Cells(Y, Z) = S2.Cells(Y, Z) + 1
    End If
    Next
 
    Set BUL = S1.[GY:GY].FindNext(BUL)
    Loop While Not BUL Is Nothing And BUL.Address <> ADRES
 
    End If
    End If
    Next
    Set BUL = Nothing
    Set S1 = Nothing
    Set S2 = Nothing
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Katılım
28 Ocak 2008
Mesajlar
260
Excel Vers. ve Dili
2003
Selamlar,

Aşağıdaki kodu denermisiniz. Kodun sağlıklı çalışması için "Bilgiler" isimli sayfanın A sütunundaki kelimelerin sonundaki boşluk karakterlerini kaldırın.

Kod:
Option Explicit
 
Sub TOPLA_AKTAR()
    Dim S1 As Worksheet, S2 As Worksheet
    Dim X As Long, Y As Long, Z As Integer
    Dim BUL As Range
    Dim ADRES As String
    Set S1 = Sheets("Bilgiler")
    Set S2 = Sheets("Transay Masraf")
 
    For X = 3 To S2.[A65536].End(3).Row Step 4
    S2.Range("C" & X & ":R" & X).ClearContents
    Next
    For Y = 3 To S2.[A65536].End(3).Row Step 4
    If S2.Cells(Y, "S") > 0 Then
    Set BUL = S1.[GY:GY].Find(S2.Cells(Y, 1))
    If Not BUL Is Nothing Then
    ADRES = BUL.Address
    Do
    S2.Cells(Y, "R") = Evaluate("=SUMPRODUCT((Bilgiler!GY2:GY5000=""" & S2.Cells(Y, "A") & """)*(Bilgiler!A2:A5000=""" & S2.Cells(2, "R") & """))")
 
    For Z = 3 To 17
    If Trim(S1.Cells(BUL.Row, "K")) = Trim(S2.Cells(2, Z)) And Trim(S1.Cells(BUL.Row, "A")) = Trim(S2.[R2]) Then
    S2.Cells(Y, Z) = S2.Cells(Y, Z) + 1
    End If
    Next
 
    Set BUL = S1.[GY:GY].FindNext(BUL)
    Loop While Not BUL Is Nothing And BUL.Address <> ADRES
 
    End If
    End If
    Next
    Set BUL = Nothing
    Set S1 = Nothing
    Set S2 = Nothing
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub

Korhan Hocam, yaptım ama bazılarında olmadı boşlukları kaldırdım (F2 kelime sonu + del/backspace) olarak mı ? yoksa daha farklı birşey mi ifade etmek istediniz, Bilgiler a kolonu List A:A dan sort ediyor orada da yine aynı değişikliği yaptım olmadı bazı satırları yaptı bazılarını yapmadı
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Korhan hocam aşağıdaki topla çarpım formulünün hücredeki görüntüsü nasıl olmaldır?
Evaluate("=SUMPRODUCT((Bilgiler!GY2:GY5000=""" & S2.Cells(Y, "A") & """)*(Bilgiler!A2:A5000=""" & S2.Cells(2, "R") & """))")

ne iş yapar?
 
Katılım
28 Ocak 2008
Mesajlar
260
Excel Vers. ve Dili
2003
Korhan hocam aşağıdaki topla çarpım formulünün hücredeki görüntüsü nasıl olmaldır?
Evaluate("=SUMPRODUCT((Bilgiler!GY2:GY5000=""" & S2.Cells(Y, "A") & """)*(Bilgiler!A2:A5000=""" & S2.Cells(2, "R") & """))")

ne iş yapar?
bilgiler sayfası gy2:gy sütunu eşitse transay masraf sayfası A kolonundaki servislerden birine VE bilgiler sayfasındaki a2:a kolonundaki transay masraf sayfasındaki R kolonun 2. satırındaki hücrede yazılı isime uyanların toplamı

yani Armed firmasında olupta ümraniye servisini kullananların mevcudu yada kadıköy servisini kullananların mevcudu
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,738
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Korhan Hocam, yaptım ama bazılarında olmadı boşlukları kaldırdım (F2 kelime sonu + del/backspace) olarak mı ? yoksa daha farklı birşey mi ifade etmek istediniz, Bilgiler a kolonu List A:A dan sort ediyor orada da yine aynı değişikliği yaptım olmadı bazı satırları yaptı bazılarını yapmadı
Bazı satırları yapmadı demişsiniz. Olmayan satırları birebir kontrol edin içinde mutlaka eşleşmeyen bir karakter vardır. Bu eşleşmeyi sağladıktan sonra kodu çalıştırın.
 
Katılım
28 Ocak 2008
Mesajlar
260
Excel Vers. ve Dili
2003
Selamlar,



Bazı satırları yapmadı demişsiniz. Olmayan satırları birebir kontrol edin içinde mutlaka eşleşmeyen bir karakter vardır. Bu eşleşmeyi sağladıktan sonra kodu çalıştırın.
Korhan hocam, son çare ve kesin sonuç için tüm verileri (servis-firma-semt) bilgilerini validation olarak oluşturdum,


Transay masraftaki A sütunu ile C2:Q2 arasındaki departmanları & Bilgiler sayfasındaki tüm bilgileri validation ile List sayfasından aldırmama karşın mesala Acıbadem servis mevcudu 10 kişi olmasına karşın sorgulama sonucu 4 kişi gözüküyor

örneği incelemenizi rica ediyorum hocam...
 

Ekli dosyalar

Üst