Soru Bir sütundaki verilerin Yüzde Kaçının hesaplandığını bulmak

hadromer

Altın Üye
Katılım
23 Ekim 2015
Mesajlar
402
Excel Vers. ve Dili
LTSC Professional Plus 2021 64 Bit Türkçe
Altın Üyelik Bitiş Tarihi
26-04-2028
Merhaba,
Örnek dosyada olduğu gibi bir dosya içerisinde ayrı sayfalardan oluşan Y sütununda bazı değerler var. Yan sütunlarda da bazı başlıklardan oluşan ve Y sütunundaki verilerle ilgili bazı hesaplamalar var. Ben Y'deki verilerin yan sütunlardaki hesaplamalara yüzde kaçı dahil olmuş hesaplatmak istiyorum.

örneğin Y sütununda 100 hücre dolu. Z'de yer alan "TIT" sütunu 100 hücreden 20'sini işleme dahil etmiş. Dolayısıyla TIT sütunu S01 sayfasındaki verilerin %20'sini hesaplamış. Bu şekilde bir hesaplama yapmak istiyorum. Yardımcı olabilir misiniz ? Teşekkür ederim.

Not : Sayfalardaki tüm sütunlar sabittir. Bir çalışma kitabı içerisinde yer alan 50 adet sayfa bulunmaktadır. Tek tek hepsine aynı işlem uygulanmalıdır.

Örnek Dosya Geçici Linki (içerisinde makro var) : https://s7.dosya.tc/server24/g8uw4i/ornekdosya.xlsm.html
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Örnek dosyanızdaki veriler, anlattıklarınızla uyuşmuyor ya da ben anlayamadım.
Örnek dosyada Y sütununda 21 veri var ve TIT da 12 si hesaplanmış diyorsunuz

Elle sayıyorum farklı çıkıyor, sanırım o hücrelere verileri başka bir yerden çekiyorsunuz. Bunu açıklamalı, 21 veriyi neye göre saydığınızı belirtmelisiniz.
Aynı belirtmeyi diğer sütunlar için de söylemelisiniz.

Son olarak, sonucu formülle mi makroyla mı istiyorsunuz?
 

hadromer

Altın Üye
Katılım
23 Ekim 2015
Mesajlar
402
Excel Vers. ve Dili
LTSC Professional Plus 2021 64 Bit Türkçe
Altın Üyelik Bitiş Tarihi
26-04-2028
Örnek dosyanızdaki veriler, anlattıklarınızla uyuşmuyor ya da ben anlayamadım.
Örnek dosyada Y sütununda 21 veri var ve TIT da 12 si hesaplanmış diyorsunuz

Elle sayıyorum farklı çıkıyor, sanırım o hücrelere verileri başka bir yerden çekiyorsunuz. Bunu açıklamalı, 21 veriyi neye göre saydığınızı belirtmelisiniz.
Aynı belirtmeyi diğer sütunlar için de söylemelisiniz.

Son olarak, sonucu formülle mi makroyla mı istiyorsunuz?
Merhaba, dikkatiniz için teşekkür ederim. Örnek dosyada istenilen adlı sayfadaki sayıların farklı olması benim hatam. Ordaki verileri başka bir çalışmadan almıştım düzeltmeyi unutmuşum. Siz doğru anlamissiniz ben örnek dosyaya yanlış veri koymuşum.

Ayrıca mümkünse makro daha iyi olur benim için.sanirim konu farklı yerde bunun için de ayrıca Özür diliyorum.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
İyi de soruma cevap vermemişsiniz.
Elle sayıyorum farklı çıkıyor, sanırım o hücrelere verileri başka bir yerden çekiyorsunuz. Bunu açıklamalı, 21 veriyi neye göre saydığınızı belirtmelisiniz.
Aynı belirtmeyi diğer sütunlar için de söylemelisiniz.
 

hadromer

Altın Üye
Katılım
23 Ekim 2015
Mesajlar
402
Excel Vers. ve Dili
LTSC Professional Plus 2021 64 Bit Türkçe
Altın Üyelik Bitiş Tarihi
26-04-2028
İyi de soruma cevap vermemişsiniz.
Elle sayıyorum farklı çıkıyor, sanırım o hücrelere verileri başka bir yerden çekiyorsunuz. Bunu açıklamalı, 21 veriyi neye göre saydığınızı belirtmelisiniz.
Aynı belirtmeyi diğer sütunlar için de söylemelisiniz.
Merhaba,
örnek dosyayı güncelledim. ektedir.
-S01 adlı sayfada Sarı sütunlu veriler Y sütunundaki verilerden kaç tanesini hesapladığını bulmak için ben manuel olarak Önce Y sütunundaki verileri saydırıyorum (=BAĞ_DEĞ_SAY).
-S01'de 36 adet veri olduğunu gördüm. Aynı işlemi TIT başlıklı Z sütununa ve diğer sarı renkli sütunlara uyguluyorum. Ancak sarı renkli sütunlardaki "0" yazan hücreleri dahil etmiyorum.
-TIT ; 36 veriden 15 tanesini hesaplamış. istenilen format adlı sayfada bu değerleri yerine yazıp yüzdesini alıyorum. 15*100/36 = 41,67.
-Bu işlemi TI, EPI-D gibi diğer sarı renkli sütunlara uyguluyorum.

istediğim şey bu işlemin çalışma kitabındaki tüm sayfalara uygulanması.

Yardımlarınız için şimdiden teşekkür ederim.
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
1. Sonucu formülle mi makroyla mı istiyorsunuz?
2. Y sütunu ve diğer Sarı sütunların pozisyonu hep sabit mi?
3. Satır sayısı her daim 3.satırla 179 arasında mı?
4. 2 ve 3 sorular tüm S01-S02... sayfaları için de aynı mı?
 

hadromer

Altın Üye
Katılım
23 Ekim 2015
Mesajlar
402
Excel Vers. ve Dili
LTSC Professional Plus 2021 64 Bit Türkçe
Altın Üyelik Bitiş Tarihi
26-04-2028
1. Sonucu formülle mi makroyla mı istiyorsunuz?
2. Y sütunu ve diğer Sarı sütunların pozisyonu hep sabit mi?
3. Satır sayısı her daim 3.satırla 179 arasında mı?
4. 2 ve 3 sorular tüm S01-S02... sayfaları için de aynı mı?
Sonucu makro ile alabilirsem çok iyi olur size zahmet olmazsa.
Geri kalan tüm soruların cevabı evet :)
Tüm pozisyonlar tüm sayfalarda sabit,
2 ve 3. Sorular s01-s02 sayfaları için de sabit. Ana dosyada s01-s44 olmak üzere toplam 44 sayfam mevcut.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Aşağıdaki kodu İstenilen Format sayfasının KOD sayfasına yapıştırın.

Başlık Satırı Sayfadaki gibi sabit kalsın.
Şablon sayfanız sabit kalsın.

Dosyanızda Sxx şeklindeki sayfaları bulur, hesaplar ve listeler.
İstenilenFormat isimli sayfayı her aktif ettiğinizde çalışır.

C++:
Private Sub Worksheet_Activate()
    Dim Dict As Object, DictSayfa As Object, Sh As Worksheet, Liste()
    Dim i As Integer, k As Integer, SatırSay As Integer
    'On Error Resume Next
    SatırSay = 177
    Range("A2:XFD" & Rows.Count).ClearContents
    Set Dict = CreateObject("Scripting.Dictionary")
    Set DictSayfa = CreateObject("Scripting.Dictionary")
    For Each Sh In Worksheets
        If Sh.Name Like "S##" Then DictSayfa.Add Sh.Name, 1
    Next Sh
    For i = 25 To Worksheets("Şablon").Range("XFD1").End(xlToLeft).Column
        If Not Dict.Exists(UCase(Worksheets("Şablon").Cells(1, i))) And UCase(Worksheets("Şablon").Cells(1, i)) <> "" Then Dict.Add UCase(Worksheets("Şablon").Cells(1, i)), i
    Next i
    ReDim Liste(1 To DictSayfa.Count, 1 To 2 + Dict.Count * 2)
    For i = 1 To DictSayfa.Count
        Set Sh = Worksheets(DictSayfa.Keys()(i - 1))
        Liste(i, 1) = Sh.Name
        Liste(i, 2) = WorksheetFunction.CountIf(Sh.Range("Y3:Y179"), ">0")
        For k = 1 To Dict.Count
            Liste(i, 2 * k + 1) = WorksheetFunction.CountIf(Sh.Range("A1").Offset(2, Dict.items()(k - 1) - 1).Resize(SatırSay, 1), ">0")
            Liste(i, 2 * k + 2) = Liste(i, 2 * k + 1) / Liste(i, 2) * 100
        Next k
    Next i
    Range("A2").Resize(UBound(Liste, 1), UBound(Liste, 2)) = Liste
End Sub
 

hadromer

Altın Üye
Katılım
23 Ekim 2015
Mesajlar
402
Excel Vers. ve Dili
LTSC Professional Plus 2021 64 Bit Türkçe
Altın Üyelik Bitiş Tarihi
26-04-2028
Aşağıdaki kodu İstenilen Format sayfasının KOD sayfasına yapıştırın.

Başlık Satırı Sayfadaki gibi sabit kalsın.
Şablon sayfanız sabit kalsın.

Dosyanızda Sxx şeklindeki sayfaları bulur, hesaplar ve listeler.
İstenilenFormat isimli sayfayı her aktif ettiğinizde çalışır.

C++:
Private Sub Worksheet_Activate()
    Dim Dict As Object, DictSayfa As Object, Sh As Worksheet, Liste()
    Dim i As Integer, k As Integer, SatırSay As Integer
    'On Error Resume Next
    SatırSay = 177
    Range("A2:XFD" & Rows.Count).ClearContents
    Set Dict = CreateObject("Scripting.Dictionary")
    Set DictSayfa = CreateObject("Scripting.Dictionary")
    For Each Sh In Worksheets
        If Sh.Name Like "S##" Then DictSayfa.Add Sh.Name, 1
    Next Sh
    For i = 25 To Worksheets("Şablon").Range("XFD1").End(xlToLeft).Column
        If Not Dict.Exists(UCase(Worksheets("Şablon").Cells(1, i))) And UCase(Worksheets("Şablon").Cells(1, i)) <> "" Then Dict.Add UCase(Worksheets("Şablon").Cells(1, i)), i
    Next i
    ReDim Liste(1 To DictSayfa.Count, 1 To 2 + Dict.Count * 2)
    For i = 1 To DictSayfa.Count
        Set Sh = Worksheets(DictSayfa.Keys()(i - 1))
        Liste(i, 1) = Sh.Name
        Liste(i, 2) = WorksheetFunction.CountIf(Sh.Range("Y3:Y179"), ">0")
        For k = 1 To Dict.Count
            Liste(i, 2 * k + 1) = WorksheetFunction.CountIf(Sh.Range("A1").Offset(2, Dict.items()(k - 1) - 1).Resize(SatırSay, 1), ">0")
            Liste(i, 2 * k + 2) = Liste(i, 2 * k + 1) / Liste(i, 2) * 100
        Next k
    Next i
    Range("A2").Resize(UBound(Liste, 1), UBound(Liste, 2)) = Liste
End Sub
çok teşekkür ederim. Tam istediğim gibi.
 

hadromer

Altın Üye
Katılım
23 Ekim 2015
Mesajlar
402
Excel Vers. ve Dili
LTSC Professional Plus 2021 64 Bit Türkçe
Altın Üyelik Bitiş Tarihi
26-04-2028
Merhaba Ömer Faruk Bey,
aynı konu olduğu için yeni konu açmadan burdan sormak istedim.

Yukarıdaki satır ve sütun sayısında artış oldu. Ben kodu güncelleyemedim. Önceden Y sütunundaki verileri sayıp sağındaki sütunlarda yapılan hesaplamaları dahil ediyorduk. Ancak 4 tane daha sütun eklendiği için Y sütunu yerine AC sütunu saymam gerekiyor.

Kod:
 Liste(i, 2) = WorksheetFunction.CountIf(Sh.Range("Y3:Y179"), ">0")
Bu kodu yeni sütun pozisyonuna güncelledim (AC3:AC296) ancak doğru sonuç vermedi.

rica etsem örnek dosyadaki S01 sayfasına göre oran sayfasına (eski adıyla istenilen format) güncelleyebilir misiniz ? Teşekkür ederim.
 

Ekli dosyalar

Üst