• DİKKAT

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

Döngülerle ilgili bir kod istiyorum sizlerden

Katılım
17 Aralık 2008
Mesajlar
780
Excel Vers. ve Dili
Microsoft 365
Merhaba arkadaşlar;

Ekteki dosyada I1 hücresine 00/ yada 41/ gibi bir sayı giricem.Sonra makro çalışacak.Hücredeki bu sayıyı F sütununda bulup bununla ilgili en büyük değeri bir mesaj içerisinde ekrana getirmesini istiyorum.Mesela I1 hücresine 62/ yazıyorum.Sonuç olarak 62/059 vermesi gerekir,mesaj olarak.

Tahmin ediyorum ki,bir döngüye tabi tutmak gerekiyor.Ama ilgili kodu yazmasını bilmiyorum.Yardımcı olursanız sevinirim.
 

Ekli dosyalar

Aşağıdaki kodu deneyin.

Kod:
Sub sonveriyibul()
ilk = WorksheetFunction.Match([I1] & "*", [f:f], 0)
son = WorksheetFunction.CountIf([f:f], [I1] & "*") + ilk - 1
MsgBox Cells(son, "f")
End Sub

Not: veriler sıralı ise doğru sonuç verecektir.
 
Levent Bey,

Çok teşekkür ederim.Benim çok işime yarayacak bu çalışma.

ilk = WorksheetFunction.Match([I1] & "*", [f:f], 0)
son = WorksheetFunction.CountIf([f:f], [I1] & "*") + ilk - 1

Yukarıdaki kodların ne anlama geldiğini öğrenmek isterim.Eğer vaktiniz varsa kısa bir anlatım yazabilir misiniz ?
 
Aslında bu kodlar, Excelin hazır fonksiyonları ile yapılan bir çözümün VBA'ya uyarlanmış şeklidir. Ekli dosyada sarı renkli hücreler bu fonksiyonların çalışma şeklini gösteriyor. Kullanılan yukarıdaki kodlar bu işlemin birebir aynısıdır. Bu dosya sanıyorum size bir fikir verecektir. Yapılan işlem kısaca, ilgili kriteri içeren ilk ve son verinin yerini bulmaktır.
 

Ekli dosyalar

Levent Bey,

Yapmış olduğunuz çalışma için teşekkür ederim.İnceliyorum sayenizde.

Bu arada son bir sorum var.Ben bu çalışmayı sql veritabanından dış veri al ile çekiyorum.Sql sorgusunun içine 62/0 ile başlayan en son kesilmiş numara ile ilgili sorguyu oluşturamadım.Bunu yapmak durumunda kaldım.Eğer yapabilseydim,dış veri al ile çektiğim veri,20 satırdan ve en son fatura numaralarından oluşacaktı.

Sql sorgusu ile aranız nedir ?

Not:Sende çok oluyon artık derseniz alınmam :)
 
SQL veritabanı ile hiç uğraşmadım ancak bu konuda bilgili çok arkadaşımız var. Sorunuzu sql sorgusu düzenleme şeklinde sorsaydınız sanıyorum daha hızlı cevap alırdınız. Dış veri al işlemini makro kaydet ile kaydedip elde ettiğiniz kodları yazarmısınız. Bu şekilde sorunuz daha anlaşılır olacaktır.
 
Levent Bey;

Bu konu ile oluşturduğum makro işyerindeki bilgisayarımda.Ama sql sorgusu aşağıdadır.Hafta içide eğer isterseniz makrolu halini gönderebilirim.

SELECT FATF.SIRKET, FATF.TARIH, FATF.TIP, FATF.FISNO, FATF.CKOD, FATF.BELGE, CKART.OZEL6, FATF.AKTIP
FROM SENTEZV6.dbo.CKART CKART, SENTEZV6.dbo.FATF FATF
WHERE CKART.KOD = FATF.CKOD AND ((FATF.SIRKET='10') AND (FATF.TIP=4) AND (CKART.OZEL6='UĞUR'))
ORDER BY FATF.BELGE

FATF.BELGE sütunu bizim fatura numaralarımızı tutar.

Tekrar tekrar teşekkür ederim ilginize..
 
Merhaba,

SQL sorgusu şunun gibi olabilir...

Kod:
SELECT top 1 FATF.SIRKET, FATF.TARIH, FATF.TIP, FATF.FISNO, FATF.CKOD, FATF.BELGE, CKART.OZEL6, FATF.AKTIP
FROM SENTEZV6.dbo.CKART CKART 
inner join 
SENTEZV6.dbo.FATF FATF
on CKART.KOD = FATF.CKOD 
where ((FATF.SIRKET='10') AND (FATF.TIP=4) AND (CKART.OZEL6='UĞUR') and (FATF.BELGE like '62/0%') )
ORDER BY FATF.BELGE desc
 
Zeki bey;

Teşekkür ederim.Sorunum çözüldü.

Lakin ilave bir isteğim var.

(FATF.BELGE like '62/0%') Bu kodun içine 55/0% , 53/0% ,gibi ek başka kıstaslar koymayı deniyorum.Ama yapamadım.

Bunun için sql kodunu nasıl yazmak gerekir ?
 
(FATF.BELGE like ['62/0%','55/0%','53/0%']) şeklinde olabilir.
 
Sayın Dentex;

Yeni kod aşağıdaki gibi oldu.Ama hata veriyor.Hata olarak da "Select deyimi içinde seç listesinden sonra 'FATF' gelemez.

Ne yapmalıyız ?


SELECT top 1 FATF.SIRKET, FATF.TARIH, FATF.TIP, FATF.FISNO, FATF.CKOD, FATF.BELGE, CKART.OZEL6, FATF.AKTIP
FROM SENTEZV6.dbo.CKART CKART
inner join
SENTEZV6.dbo.FATF FATF
on CKART.KOD = FATF.CKOD
where ((FATF.SIRKET='10') AND (FATF.TIP=4) AND (CKART.OZEL6='UĞUR') and (FATF.BELGE like ['62/0%','55/0%','53/0%']))
ORDER BY FATF.BELGE desc
 
Merhaba çoklu "like" ifadesi için Oracle server de başarılı sorgu şu şekilde;
and (FATF.BELGE like '62/0%' or like '55/0%' or like '53/0%')
Sizde denerseniz (parantezler filan) olacaktır.
 
Sayın Dentex;

İlginize teşekkür ederim.Sqlde bu komut çalışmadı.
 
Merhaba,

Kod:
(FATF.BELGE like in ('62/0%', '55/0%', '53/0%')
 
SELECT top 1 FATF.SIRKET, FATF.TARIH, FATF.TIP, FATF.FISNO, FATF.CKOD, FATF.BELGE, CKART.OZEL6, FATF.AKTIP
FROM SENTEZV6.dbo.CKART CKART
inner join
SENTEZV6.dbo.FATF FATF
on CKART.KOD = FATF.CKOD
where ((FATF.SIRKET='10') AND (FATF.TIP=4) AND (CKART.OZEL6='UĞUR') and (FATF.BELGE like in ('62/0%' , '63/0%')))

ORDER BY FATF.BELGE desc

Zeki bey,sorguyu yukarıdaki gibi yazdım ama hata verdi.Herhalde parantezler ile ilgili bir sıkıntı var.3 tane parantez ile kapanması gerekiyor.Çünkü 3 tane açılmış oldu.

Sorun nerde olabilir ?
 
SELECT top 1 FATF.SIRKET, FATF.TARIH, FATF.TIP, FATF.FISNO, FATF.CKOD, FATF.BELGE, CKART.OZEL6, FATF.AKTIP
FROM SENTEZV6.dbo.CKART CKART
inner join
SENTEZV6.dbo.FATF FATF
on CKART.KOD = FATF.CKOD
where ((FATF.SIRKET='10') AND (FATF.TIP=4) AND (CKART.OZEL6='UĞUR') AND (FATF.BELGE like '58/0%') or (FATF.BELGE like '59/0%'))
ORDER BY FATF.BELGE desc


Arkadaşlar kodu en son yukarıdaki şekle getirdim.Hata vermiyor.Ancak iki like nesnesini karşılaştırıp en büyük olan sonucu veriyor.Yani 59/ ile başlayanı veriyor.İki like nesnesinin arasına "or" nesnesi kullandım."And" kullanınca hata vermiyor.Ama hiç sonuç çıkmıyor.

Bu sorgu için çok uğraştım.Sizlerden ricam bir kez daha yukarıdaki koda bakmanız.Yanlışı bulup düzelteyim.
 
58-59 "aralığı" için,

Kod:
where ((FATF.SIRKET='10') AND (FATF.TIP=4) AND (CKART.OZEL6='UĞUR') AND (FATF.BELGE like '[58/0% - 59/0%]'))
 
Sayın Zeki Bey;

Sorgunuz hatasız çalıştı ama sonuç vermedi.
 
Geri
Üst