Soru Belirli sütunları silmek, Bir sütunun Yüzdesini almak

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,
Bir klasör içerisinde 44 farklı dosyam var. hepsi aynı formatta, aynı satır ve sütunlara sahip. ben bu dosyalardaki bazı sütunları silmek ve bir sütundaki verilerinde yüzdesini alarak bir dosyada toplamak istiyorum. Örnek bir dosya ekledim. örnek dosya içerisinde hangi formatta toplanacağına dair örnek bir sayfa da hazırladım. Yardımcı olabilirseniz çok sevinirim. İyi çalışmalar.

ÖRNEK DOSYA LINKI
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
553
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Merhaba,
dosya isimlerinizi bilmiyorum ama aşağıdaki kodlar isimleri 1'den 44'e kadar olan ve uzantısı .xls olan sırayla 44 adet dosyanın tamamında bahsettiğiniz dosyayı açar, bahsettiğiniz sütunları siler, sütun başlıklarını yazar ve kaydedip kapatır.
Örneğinizde xls var ancak office versiyonunuz 2019 yazmışsınız.
yol vs türü kısımları kendi bilgilerinize göre düzenlersiniz.

Kod:
Dim dosyaadı As String, yol As String, i As Integer, sayfaadı As String, ORNEK As Workbook
Set örnek = Workbooks("ORNEK.xlsm")
yol = "C:\Users\Saturn\Downloads\sil\"

For i = 1 To 44

dosyaadı = i & ".xls"
sayfaadı = "s" & i & "_TableToExcel"
        Workbooks.Open yol & dosyaadı
        Workbooks(dosyaadı).Activate
        ActiveWorkbook.Sheets(sayfaadı).Range("A:B").Delete
        ActiveWorkbook.Sheets(sayfaadı).Range("B:B").Delete
        ActiveWorkbook.Sheets(sayfaadı).Range("C:F").Delete
        ActiveWorkbook.Sheets(sayfaadı).Range("A1").Value = "Corine Code"
        ActiveWorkbook.Sheets(sayfaadı).Range("C1").Value = "Land %"
       
        Workbooks(dosyaadı).Close True
Next i
 

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,
dosya isimlerinizi bilmiyorum ama aşağıdaki kodlar isimleri 1'den 44'e kadar olan ve uzantısı .xls olan sırayla 44 adet dosyanın tamamında bahsettiğiniz dosyayı açar, bahsettiğiniz sütunları siler, sütun başlıklarını yazar ve kaydedip kapatır.
Örneğinizde xls var ancak office versiyonunuz 2019 yazmışsınız.
yol vs türü kısımları kendi bilgilerinize göre düzenlersiniz.

Kod:
Dim dosyaadı As String, yol As String, i As Integer, sayfaadı As String, ORNEK As Workbook
Set örnek = Workbooks("ORNEK.xlsm")
yol = "C:\Users\Saturn\Downloads\sil\"

For i = 1 To 44

dosyaadı = i & ".xls"
sayfaadı = "s" & i & "_TableToExcel"
        Workbooks.Open yol & dosyaadı
        Workbooks(dosyaadı).Activate
        ActiveWorkbook.Sheets(sayfaadı).Range("A:B").Delete
        ActiveWorkbook.Sheets(sayfaadı).Range("B:B").Delete
        ActiveWorkbook.Sheets(sayfaadı).Range("C:F").Delete
        ActiveWorkbook.Sheets(sayfaadı).Range("A1").Value = "Corine Code"
        ActiveWorkbook.Sheets(sayfaadı).Range("C1").Value = "Land %"
      
        Workbooks(dosyaadı).Close True
Next i
çok teşekkür ederim.
Evet versiyonum office 2019 fakat o excel dosyaları bir programın çıktısı. O otomatik olarak bu formatta veriyor. Ben bunu belirtmeyi unuttum afedersiniz. Peki bir şey daha rica etmek istiyorum. Sütunların yüzdesini oluşturan bir kod ekleyebilir miyiz bu kodlara.
 

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,
dosya isimlerinizi bilmiyorum ama aşağıdaki kodlar isimleri 1'den 44'e kadar olan ve uzantısı .xls olan sırayla 44 adet dosyanın tamamında bahsettiğiniz dosyayı açar, bahsettiğiniz sütunları siler, sütun başlıklarını yazar ve kaydedip kapatır.
Örneğinizde xls var ancak office versiyonunuz 2019 yazmışsınız.
yol vs türü kısımları kendi bilgilerinize göre düzenlersiniz.

Kod:
Dim dosyaadı As String, yol As String, i As Integer, sayfaadı As String, ORNEK As Workbook
Set örnek = Workbooks("ORNEK.xlsm")
yol = "C:\Users\Saturn\Downloads\sil\"

For i = 1 To 44

dosyaadı = i & ".xls"
sayfaadı = "s" & i & "_TableToExcel"
        Workbooks.Open yol & dosyaadı
        Workbooks(dosyaadı).Activate
        ActiveWorkbook.Sheets(sayfaadı).Range("A:B").Delete
        ActiveWorkbook.Sheets(sayfaadı).Range("B:B").Delete
        ActiveWorkbook.Sheets(sayfaadı).Range("C:F").Delete
        ActiveWorkbook.Sheets(sayfaadı).Range("A1").Value = "Corine Code"
        ActiveWorkbook.Sheets(sayfaadı).Range("C1").Value = "Land %"
      
        Workbooks(dosyaadı).Close True
Next i
kodu çalıştıramadım
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
553
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Bende sorunsuz çalışıyor.
Eğer dosyalarınızın uzantısı xlsx ise kod çalışmaz.
Örneğinizde sütunların % hesabının kendi içlerinde mi yoksa toplam üzerinden mi yaptırılacağı yazılmadığı için o kodu eklememiştim. Kendi içerisinde hesaplatan bir kod ekleyeceğim.
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
553
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Merhaba,
yüzde kodunu ekleyemedim, "yüzde stili bulunamadı" hatasını alıyorum. (ilk kez gördüğüm bir hata)
Dosya uzantısının .xls oluşundan kaynaklı, çünkü bende (Excel 2016'da) uyumluluk modunda açıyor.
Eğer dosyalarınızı toplu halde .xlsx yaparsanız aşağıdaki kodla % sütunu da çalışır.

Dosyalarınızı toplu olarak .xlsx yapmak için bu mesajı inceleyiniz.


Kod:
Dim dosyaadı As String, yol As String, i As Integer, sayfaadı As String, ORNEK As Workbook
Set örnek = Workbooks("ORNEK.xlsm")
yol = "C:\Users\Saturn\Downloads\sil\"

For i = 1 To 44

dosyaadı = i & ".xlsx"
sayfaadı = "s" & i & "_TableToExcel"


        Workbooks.Open yol & dosyaadı
        Workbooks(dosyaadı).Activate
        son = Application.WorksheetFunction.CountA(ActiveWorkbook.Sheets(sayfaadı).Range("A:A"))
        yüzde = "C2:C" & son
        ActiveWorkbook.Sheets(sayfaadı).Range("A:B").Delete
        ActiveWorkbook.Sheets(sayfaadı).Range("B:B").Delete
        ActiveWorkbook.Sheets(sayfaadı).Range("C:F").Delete
        ActiveWorkbook.Sheets(sayfaadı).Range("A1").Value = "Corine Code"
        ActiveWorkbook.Sheets(sayfaadı).Range("C1").Value = "Land %"
        ActiveWorkbook.Sheets(sayfaadı).Range(yüzde).Formula = "=RC[-1]/SUM(R2C2:R" & son & "C2)"
        ActiveWorkbook.Sheets(sayfaadı).Range("C:C").Style = "Percent"
        ActiveWorkbook.Sheets(sayfaadı).Range("C:C").NumberFormat = "0.00%"
        Columns("A:C").EntireColumn.AutoFit
        Workbooks(dosyaadı).Close True
Next i
 

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
Bende sorunsuz çalışıyor.
Eğer dosyalarınızın uzantısı xlsx ise kod çalışmaz.
Örneğinizde sütunların % hesabının kendi içlerinde mi yoksa toplam üzerinden mi yaptırılacağı yazılmadığı için o kodu eklememiştim. Kendi içerisinde hesaplatan bir kod ekleyeceğim.
bir sayfaya modül ekleyip, geliştirici sekmesinden buton ekledigimde hangi kodu tanımlayacağım gözükmüyor. Rica etsem kodu eklediğiniz ve çalışan bir dosyayı benimle paylaşabilir misiniz ?

aşağıya yaptığım işlemle ilgili bir gif ekledim. Rica etsem kontrol eder misiniz ?

 

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

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
553
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Buradan indirebilirsiniz.

Bu arada, bir buton ekleyip tasarım modunda üzerine çift tıkladığınızda çıkan sayfaya kodlarınızı yapıştırırsanız ve sonra tasarım modundan çıkarsanız, o düğmeye basıldığında o kodlar çalışır.
 

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
Buradan indirebilirsiniz.

Bu arada, bir buton ekleyip tasarım modunda üzerine çift tıkladığınızda çıkan sayfaya kodlarınızı yapıştırırsanız ve sonra tasarım modundan çıkarsanız, o düğmeye basıldığında o kodlar çalışır.
çok teşekkür ederim, şuanda çalışıyor.
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
553
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Rica ederim. İyi çalışmalar.
 

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
biraz önce tek dosya üzerinde denedim orada çalışmıştı. 1-44 arası toplu çalıştırmayı deneyince 3 numaralı dosyaya gelince böyle yapıyor. ve ilk iki dosyayı fotoğraftaki gibi kaydetmiş.

 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
553
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
kodlarda döngüyü for i=1 to 44 satırı sağlıyor. Geri kalan kısımlarda kodla ilgili bir durum yok.
2 tanesinde yapması ve diğerlerinde yapmaması kodlardan değil dosyalardan kaynaklıdır.
isimlerini, uzantılarını ve sayfa isminin söylediğiniz gibi s1_TableToExcel, s2_TableToExcel şeklinde gittiğini kontrol ediniz.

Dosyalarınızı görmeden bir şey söyleyemem.

örnek 2 dosyayı içeren ve bende düzgün çalışan veri dosyasını buradan indirip kontrol edebilirsiniz.
 
Son düzenleme:

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
kodlarda döngüyü for i=1 to 44 satırı sağlıyor. Geri kalan kısımlarda kodla ilgili bir durum yok.
2 tanesinde yapması ve diğerlerinde yapmaması kodlardan değil dosyalardan kaynaklıdır.
isimlerini, uzantılarını ve sayfa isminin söylediğiniz gibi s1_TableToExcel, s2_TableToExcel şeklinde gittiğini kontrol ediniz.

Dosyalarınızı görmeden bir şey söyleyemem.

örnek 2 dosyayı içeren ve bende düzgün çalışan veri dosyasını buradan indirip kontrol edebilirsiniz.
Hocam sanırım problemi buldum. sizin dediğiniz gibi sayfa isminde değişiklik olduğundan. Şöyle ki ; yukarıda toplu olarak format çevirme kodunu uyguladığımda sayfa isimleri de dosya ismiyle aynı oluyor. Bizim kodumuzda
Kod:
sayfaadı = "s" & i & "_TableToExcel"
var. Sayfa isimleri de 1 44 aralığında . table to excel yerine ne yazmam gerekiyor ?

Bir de yüzde işlemi ile ilgili mesajınızı gözden kaçırmışım afedersiniz. Yüzde işlemi Alan_ha sütununun toplamı için olacak. Yani o sütunun toplamı 8.50 çıktı diyelim. Bir hücredeki değer 8.50'nin yüzde kaçını oluşturuyor. Bu şekilde olmalı. Sizi de çok yordum özür dilerim. Yardımcı olur musunuz?
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
553
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Sayfa isimleri de 1 44 aralığında . table to excel yerine ne yazmam gerekiyor ?
Sayfa isimleriniz de dosya isimleri ile aynı ise o kısmı silerek sayfaadı = "s" & i şekline getiriniz.

Bir de yüzde işlemi ile ilgili mesajınızı gözden kaçırmışım afedersiniz. Yüzde işlemi Alan_ha sütununun toplamı için olacak. Yani o sütunun toplamı 8.50 çıktı diyelim. Bir hücredeki değer 8.50'nin yüzde kaçını oluşturuyor. Bu şekilde olmalı. Sizi de çok yordum özür dilerim. Yardımcı olur musunuz?
Yazdığım kod o şekilde çalışıyor.
 

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
Sayfa isimleriniz de dosya isimleri ile aynı ise o kısmı silerek sayfaadı = "s" & i şekline getiriniz.



Yazdığım kod o şekilde çalışıyor.
Merhaba ,
Hocam sorunu bir türlü gideremedim. Aşağıda 44 adet dosyamın olduğu link bırakıyorum. Rica etsem kodu bir de siz deneyerek nerede hata olduğuna bakabilir misiniz ? https://www.dosya.tc/server34/m4jh17/kmkare_xlsx.rar.html

hata verince debug kısmına tıkladıgımda
Kod:
son = Application.WorksheetFunction.CountA(ActiveWorkbook.Sheets(sayfaadı).Range("A:A"))
kısmında hata alıyorum
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
553
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
sayfa ismi sadece sayıdan oluşuyormuş. benim yazdığım kodda sayfaadı = "s" & i yani başında s harfi olacak şekilde idi.
sayfaadı = i şekline getirip deneyin.

Ayrıca
Kod:
Columns("A:C").EntireColumn.AutoFit
satırını da şu şekilde değiştirin.
Kod:
ActiveWorkbook.Sheets(sayfaadı).Columns("A:C").EntireColumn.AutoFit
 

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
Sorunsuz çalıştı, çok teşekkür ediyorum.
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
553
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Rica ederim iyi çalışmalar.
 
Üst