Belli bir şartı sağlayan sütunların silinmesi

Katılım
2 Mart 2006
Mesajlar
8
merhaba,

Bir sayfadaki tüm sütunları kullanıyorum. Sütunlarda belirlli bir hücredeki değere bakıp "0" (sıfır) şartını sağlayan sütunları silmek istiyorum. Bunun için for döngülü bir makro yazdım. Fakat çalışması biraz uzun sürüyor.

Amacım; makronun sayfadaki her sütunun belirli bir hücresine bakması, hücre değeri sıfırsa o sütunu seçmesi ve bir sonraki sütuna geçip aynı işlemi yapıp en son sütundan sonra silme işlemini gerçekleştirmesidir. Aslında "ARRAY" kullanabilesem sorunum çözülecek ama sütun seçme işleminde "ARRAY" kullanamıyorum.

Bilgisi ya da bir fikri olan varsa memnun olurum..
 

Kemal Demir

Özel Üye
Katılım
29 Temmuz 2004
Mesajlar
2,108
Öncelikle Hoş Geldiniz.
Tam olarak Anlattıklarınız anlamadım ornek dosya yolarsanız yardımcı olan arkadaslar cıkcaktır.
Ama aklımdaki cevabı yazayım

Aşagıdaki Kodda 2 satırı 0 olanların 256 kolon içerisinde hepsini gizler.
Açaba Bole Birşeymi İstediniz.

[vb:1:6723e1ef32]Sub kolongizle()
For x = 1 To 256
If Cells(2, x).Value = "0" Then
Columns(x).Select
Selection.EntireColumn.Hidden = True
End If
Next
End Sub[/vb:1:6723e1ef32]


bu kod da değerleri "0" ise o kolonları siler

[vb:1:6723e1ef32]Sub kolonsil()
For x = 1 To 256
If Cells(2, x).Value = "0" Then
Columns(x).Select
Selection.Delete Shift:=xlToLeft
End If
Next
End Sub[/vb:1:6723e1ef32]
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,642
Excel Vers. ve Dili
Pro Plus 2021
[vb:1:3748d0ebfb]Sub SIL()
Set kol = New Collection

For x = 256 To 1 Step -1
If Cells(5, x) = 0 Then kol.Add x ' 5. satırdaki veriler 0 sa sütunları siler
Next

If kol.Count > 0 Then Columns(kol(1)).Select
If kol.Count > 1 Then
For x = 2 To kol.Count
Union(Selection, Columns(kol(x))).Select
Next
End If
If kol.Count > 0 Then Selection.Delete
Set kol = Nothing
End Sub[/vb:1:3748d0ebfb]
 
Katılım
2 Mart 2006
Mesajlar
8
Ben de "0" olan kolonları sildirdiğiniz kodlamayı kullanıyorum. Ama uzun sürüyor.
Örneğin; C ve D sütunları "0" olsun. C sütunu silindikten sonra "eski" D sütunu yeni "C" sütunu oluyor ve döngü yeni "D" sütunuyla (eski "E" sütunu) devam ediyor. Ve bu durumda eski "D" sütunu kontrol edilmemiş oluyor. İşlemi tamamlayabilmek için döngü art arda 8 defa çalışıyor. Bu da işlem süresini uzatıyor. Benim istediğim tüm "0" değerli sütunları seçsin ve silme işlemini en sonunda yapsın (Ctrl ile birden fazla seçim yapar gibi). Bu sayede bir defada işlem bitmiş olacak.

Benim aklıma bu gelmişti. başka türlü yapma yöntemi de varsa o da kabulümdür :)

Umarım karmaşık olmamıştır bu sefer :))
 
Katılım
2 Mart 2006
Mesajlar
8
veyselemre çok teşekkür ederim.
az önce kullandım.. çok güzel olmuş ellerinize sağlık :))
 
Üst