- Katılım
- 5 Ocak 2009
- Mesajlar
- 1,586
- Excel Vers. ve Dili
- 2003 Türkçe
Selam,
sorum 2.mesajdadır.
sorum 2.mesajdadır.
Son düzenleme:
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
If WorksheetFunction.CountIf(insört.Range("F2:F" & i), insört.Range("F" & i)) = 1 Then
If WorksheetFunction.CountIf([COLOR="Red"]sanal.Range(cells(1, 1), cells(i, 1)), sanal.Range(i,1)[/COLOR]) = 1 Then
Set sanal = Sheets("insört")
Selam,Merhaba,
"sanal" isminde bir değişken tanımlayıp sayfayı "Set" ile atama yaparsanız istediğiniz olur.
Örneğin:
şeklinde.Kod:Set sanal = Sheets("insört")
Option Explicit
Sub BENZERSİZ_SÜZ()
Columns("K:M").ClearContents
Columns("B:D").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("K1"), Unique:=True
End Sub
Selam Sayın Korhan Ayhan Hocam,Selamlar,
Sayfaya veri yazmadan ifadesi ile sanırım yardımcı sütun kullanmamayı kast ediyorsunuz. Yaptığınız işlem B-C-D sütunlarındaki benzersiz kayıtları listelemek. Bunun için VERİ-FİLTRE-GELİŞMİŞ FİLTRE menüsünü kullanabilirsiniz.
Aşağıdaki kod ile yeni liste K-L-M sütunlarına aktarılır.
Kod:Option Explicit Sub BENZERSİZ_SÜZ() Columns("K:M").ClearContents Columns("B:D").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("K1"), Unique:=True End Sub
WorksheetFunction.CountIf(dizim, "örnek")
WorksheetFunction.CountIf(dizim, dizim(1,i))
WorksheetFunction.sum(dizim)
Sub dene()
Set dizi = Range("a1:a20")
Say = WorksheetFunction.CountIf(dizi, "A")
MsgBox Say
End Sub
Selam İlginize çok teşekkür ederim. Ancak, ben sorumu tam anlatamadım sanırım. Sizi cevabınızda zaten Range("a1:a20") var olduğu için çözüm kolay oluyor.Merhaba,
İstediğiniz aralığı set olarak tanımlarsanız. İstediğiniz eylemi gerçekleştirebilirsiniz.
Örnek:
Kod:Sub dene() Set dizi = Range("a1:a20") Say = WorksheetFunction.CountIf(dizi, "A") MsgBox Say End Sub
=KAÇINCI(aranan_değer;[B][COLOR=red]aranan_dizi[/COLOR][/B];[eşleştir_tür])
=ARA(aranan_değer;[B][COLOR=red]dizi[/COLOR][/B])
=DÜŞEYARA(aranan_değer;[B][COLOR=red]tablo_[/COLOR][COLOR=red]dizisi[/COLOR][/B][COLOR=#000000];sütun_indis_sayısı;[aralık_bak])[/COLOR]
=EĞERSAY([COLOR=red][B]aralık[/B][/COLOR];ölçüt)
=ETOPLA([COLOR=red][B]aralık[/B][/COLOR];ölçüt;[toplam_aralığı])
Selam Sayın leumruk,Merhaba,
İsteğinizi anlıyorum. Dizi içerisinde bulunan verilerde worksheetfunction işlemlerini gerçekleştirmek istiyorsunuz. Sayfadaki herhangi bir aralıkta yapabildiğiniz işlemleri dizide yapmak istiyorsunuz. a1:a20 aralığını verileri alacağı yer olarak kullandım. Boş bir aralığı Set tanımı ile alıp, içini bir döngüyle doldurarak da aynı işlemi gerçekleştirebilirsiniz. Örneğin a1:a10 aralığı boş olsun Bu aralığı set tanımı ile alıp bir döngü oluşturarak 10 adet textbox'ta bulunan verileri bu tanımın içine alarak. Sanki bir dizi gibi veya aralık gibi kullanabilirsiniz.
Ancak, işlemin sonunda dizide yapılan değişiklikler, eklemeler veya çıkarmalar aldığınız bu boş aralığa yansıyacaktır. Onu da makro sonunda aralığı sildirerek aşabilirsiniz. Biraz zorlama bir yöntem; ama belirli oranda iş görecektir.
Selam,Selamlar,
Bende bu konuda tesbit ettiğim bir noktayı açıklamak istiyorum.
Excelin yerleşik fonksiyonlarını hücreye yazdığınızda içinde kullanabileceğiniz parametreler sarı renkli bir açıklama kutucuğunda bize yön göstermesi için görüntülenir.
İşte burada aşağıdaki gibi bir görüntü ortaya çıkar.
Kod:=KAÇINCI(aranan_değer;[B][COLOR=red]aranan_dizi[/COLOR][/B];[eşleştir_tür])
Kod:=ARA(aranan_değer;[B][COLOR=red]dizi[/COLOR][/B])
Kod:=DÜŞEYARA(aranan_değer;[B][COLOR=red]tablo_[/COLOR][COLOR=red]dizisi[/COLOR][/B][COLOR=#000000];sütun_indis_sayısı;[aralık_bak])[/COLOR]
Kod:=EĞERSAY([COLOR=red][B]aralık[/B][/COLOR];ölçüt)
Dikkat ettiyseniz kırmızı renkli bölümler sorgulanan verinin aranacağı alandır. Ve yine dikkat ettiyseniz bazısında dizi kelimesi geçmektedir.Kod:=ETOPLA([COLOR=red][B]aralık[/B][/COLOR];ölçüt;[toplam_aralığı])
İşte bu dizi kelimesinin geçtiği fonksiyonları kod için oluşturduğumuz dizileri kontrol etmek için kullanabiliyoruz. Tüm dizi kelimesinin geçtiği fonksiyonları makro içinde kullanabiliyormuyuz bilemiyorum. Denemek gerekiyor.
Ekteki örnek dosyayı inceleyiniz.
Selam korhan Ayhan Hocam,Selamlar,
Range ifadesi geçtiğinine göre verilerin sayfa üzerinde olması gerekiyor.
selam,Selamlar,
Sayfaya veri yazmadan ifadesi ile sanırım yardımcı sütun kullanmamayı kast ediyorsunuz. Yaptığınız işlem B-C-D sütunlarındaki benzersiz kayıtları listelemek. Bunun için VERİ-FİLTRE-GELİŞMİŞ FİLTRE menüsünü kullanabilirsiniz.
Aşağıdaki kod ile yeni liste K-L-M sütunlarına aktarılır.
Kod:Option Explicit Sub BENZERSİZ_SÜZ() Columns("K:M").ClearContents Columns("B:D").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("K1"), Unique:=True End Sub
Sub BENZERSİZ_SÜZ()
Columns("K:M").ClearContents
[B][COLOR="Red"]Columns("B:B,D:D,E:E").[/COLOR][/B]AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("K1"), Unique:=True
End Sub
Public S As Object
Sub Deneme()
SanalSayfaOlustur
SanalSayfayiYokEt
End Sub
Sub SanalSayfaOlustur()
Set S = CreateObject("Excel.Sheet")
'Bir sayfa eklenmiştir
S.Sheets(1).Range("a1").Value = "deneme metni"
'Başka sayfa eklemek için
'S.Sheets.Add
'Sanal sayfanın (.(nokta)ya bastıktan sonra yada CTRL+SPACE tuş _
kombinasyonuna basınca) özellikleri görünmüyor
'Eğer standart bir sanal sayfa oluşturmak isterseniz.
Dim syf As New Worksheet
Set syf = S.Worksheets(1)
syf.Range("a1").Value = "deneme metnidir"
End Sub
Sub SanalSayfayiYokEt()
Set S = Nothing
End Sub