• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

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

  • Konbuyu başlatan Konbuyu başlatan imranoz
  • Başlangıç tarihi Başlangıç tarihi
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..
 
Ö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]
 
[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]
 
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 :))
 
veyselemre çok teşekkür ederim.
az önce kullandım.. çok güzel olmuş ellerinize sağlık :))
 
Geri
Üst