Seri Numarasindaki Harfi Almak

altan888

Altın Üye
Katılım
15 Şubat 2008
Mesajlar
364
Excel Vers. ve Dili
Excel 2016 TR
Altın Üyelik Bitiş Tarihi
27.09.2026
Merhabalar, Ekteki excel tablomda,

A Sütunundaki verilerin içinde 2017 sıra numarası ile BAŞLAMAYAN fatura numaralarının başındaki ilk harfi yazdırmak istiyorum, B1 den B10'a kadar yazdığım formül doğru çalışıyor Ancak B11 deki fatura numarası başında harf olmadığı için boş geçmesi lazım ama numara başında harf olmadığı için ilk rakam olan 8 rakamını yazıyor, formülümü düzeltip 8 rakamı yerine boş geçsin istiyorum, ancak formülü nasıl yazıcam çözemedim, ya da başka bir yolu var mıdır ? yardımcı olmanızı rica ederim, şimdiden çok teşekkürler.
 

Ekli dosyalar

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.

Kullandığınız formül konumuna bakmaksızın "2017" ibaresini arıyor.
Yani aradığınız "2017" ibaresi metnin sonunda bile olsa ilgili hücrede varsa, kullandığınız formül istediğiniz sonucu vermez.

Gördüğüm kadarıyla, yılı temsil eden "2017", " NO:" ibaresinden sonraki 4'üncü karakterden başlıyor.

Bu kural standart ise aşağıdaki formülün istediğiniz sonucu vermesi gerekir.
.
Kod:
=[COLOR="red"]EĞER[/COLOR]([COLOR="red"]PARÇAAL[/COLOR](A1;[COLOR="red"]BUL[/COLOR](" NO:";A1)+7;4)="2017";"";[COLOR="red"]EĞER[/COLOR]([COLOR="red"]ESAYIYSA[/COLOR](0+[COLOR="red"]PARÇAAL[/COLOR](A1;[COLOR="red"]BUL[/COLOR](" NO:";A1)+4;1));"";[COLOR="red"]PARÇAAL[/COLOR](A1;[COLOR="Red"]BUL[/COLOR](" NO:";A1)+4;1)))
 

altan888

Altın Üye
Katılım
15 Şubat 2008
Mesajlar
364
Excel Vers. ve Dili
Excel 2016 TR
Altın Üyelik Bitiş Tarihi
27.09.2026
Merhaba.

Kullandığınız formül konumuna bakmaksızın "2017" ibaresini arıyor.
Yani aradığınız "2017" ibaresi metnin sonunda bile olsa ilgili hücrede varsa, kullandığınız formül istediğiniz sonucu vermez.

Gördüğüm kadarıyla, yılı temsil eden "2017", " NO:" ibaresinden sonraki 4'üncü karakterden başlıyor.

Bu kural standart ise aşağıdaki formülün istediğiniz sonucu vermesi gerekir.
.
Kod:
=[COLOR="red"]EĞER[/COLOR]([COLOR="red"]PARÇAAL[/COLOR](A1;[COLOR="red"]BUL[/COLOR](" NO:";A1)+7;4)="2017";"";[COLOR="red"]EĞER[/COLOR]([COLOR="red"]ESAYIYSA[/COLOR](0+[COLOR="red"]PARÇAAL[/COLOR](A1;[COLOR="red"]BUL[/COLOR](" NO:";A1)+4;1));"";[COLOR="red"]PARÇAAL[/COLOR](A1;[COLOR="Red"]BUL[/COLOR](" NO:";A1)+4;1)))
Ömer Bey, formülünüz gayet güzel çalışıyor, elinize sağlık, cevap için çok çok teşekkür ederim
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Merhaba Sayın Ömer Hocam,
Aynı işlemi makro ile yapar mısınız, lütfen? Elimde benzer bir problem var da.
Saygılarımla
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba Sayın Ömer Hocam,
Aynı işlemi makro ile yapar mısınız, lütfen? Elimde benzer bir problem var da.
Saygılarımla
Merhaba.

Aşağıdaki kod da aynı işi görür.
Kırmızı renklendirdiğim ilk veri satırı, kriter yıl, bakılacak sütun adı, işlem sonucunun yazılacağı sütun adı,
yıl verisinden önceki standart anahtar kelimeyi ihtiyaca göre değiştirirsiniz.
.
Kod:
[B]Sub YILI_FARKLI_VE_SAYI_OLMAYAN_SERI_NOLARI()[/B]

[COLOR="Red"]yil = "2017"
ilksat = 1
kaynaksut = "A"
hedefsut = "B"
[B]anahtar = " NO:"[/B][/COLOR]
sonsat = Cells(Rows.Count, kaynaksut).End(3).Row
Range(Cells(ilksat, hedefsut), Cells(sonsat, hedefsut)).ClearContents
For sat = 4 To sonsat
    If Cells(sat, kaynaksut) = "" Or _
        Len(Cells(sat, kaynaksut)) = Len(Replace(Cells(sat, kaynaksut), anahtar, "")) Then GoTo 10
    nonerede = WorksheetFunction.Search(anahtar, Cells(sat, kaynaksut))
    If Mid(Cells(sat, kaynaksut), nonerede + 7, 4) = yil Then GoTo 10
    If IsNumeric(Mid(Cells(sat, kaynaksut), nonerede + 4, 1)) = True Then
        GoTo 10
    Else
        Cells(sat, hedefsut) = Mid(Cells(sat, kaynaksut), nonerede + 4, 1)
        adet = adet + 1
    End If
10
Next
MsgBox yil & " yılına ait olmayan faturaların" & vbLf & _
        "Seri Numaralarının ilk harfleri listelendi." & vbLf & vbLf & _
        "Bulunan kayıt sayısı: " & adet, vbInformation, "..::.. Ömer BARAN ..::.."
 
[B]End Sub[/B]
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Çok teşekkür ederim Sayın Ömer Hocam,
Birebir aynı olması şart değil. Sadece sıralı satırlardan parçaal nasıl yapılıyor ona bakmak istiyordum.
İlginize çok teşekkür ederim.
İyi geceler
Saygılarımla
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Dikkat edeceğiniz gibi, kod'da muhtemel hataları (istenilen kriterlere uymayan veri içeren) öngörüp,
o durumları işlem öncesinde tespit etmek ve hatalı satırlar için bir sonraki satıra geçme işlemi,
istenilen kriterlere uyan satıra gelince ise, basit "MID" yani PARÇAAL işlevini devreye sokmak gerekiyor.
Tabi MID işlevi için de veri alma başlangıç noktası ve alınacak karakter sayısının tespiti gerekiyor.
.
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın Ömer Hocam,
Çok haklısınız, bugün bu konuda çok güzel örnekler gördüm. Umarım kısa zamanda kavrarım.
Saygılarımla
 
Üst