[Yardım]  Parçalama konusunda yardım.

VBA Makrolar ile ilgili sormak istedikleriniz, yapmak istedikleriniz hakkında yardım alabileceğiniz bölümdür.

Cevap: Cevap: Parçalama konusunda yardım.

İleti#21)  halily » 06 Haz 2021 10:49

armedi4 yazdı:
halily yazdı:siz D12131415161718 ifadesini nasıl ayırırdınız?

Bu durumda 1,2 den sonra 13 gelemeyeceğinden 12,13 ile devam eden seri tercih edilmeli

neden 1,2 den sonra 13 gelemesin ki? seri olmayabileceğini, arada boşluklar olabileceğini belirtmiştiniz.
Kullanıcı avatarı
halily
Site Dostu
 
Kayıt: 23 May 2019 11:16
Meslek: yok
Yaş: 41
İleti: 527
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: adana

Cevap: Parçalama konusunda yardım.

İleti#22)  armedi4 » 06 Haz 2021 11:17

Öncelikle vakit ayırdığınız için çok teşekkür ederim.

ayrıntılı durumları anlatan bir excel dosyası yükledim. buyrun.
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
armedi4
Yeni Başlamış
 
Kayıt: 27 May 2021 11:43
Meslek: Asker
Yaş: 35
İleti: 26
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İzmir/Foça

Cevap: Parçalama konusunda yardım.

İleti#23)  halily » 06 Haz 2021 12:49

düşündüğümden daha karmaşık bir durummuş, açıkçası yapıp yapamayacağımı tam bilemiyorum.
Kullanıcı avatarı
halily
Site Dostu
 
Kayıt: 23 May 2019 11:16
Meslek: yok
Yaş: 41
İleti: 527
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: adana

Cevap: Parçalama konusunda yardım.

İleti#24)  armedi4 » 06 Haz 2021 13:26

Anladım. İlgilendiğiniz için teşekkür ederim. Sağolun.
Kullanıcı avatarı
armedi4
Yeni Başlamış
 
Kayıt: 27 May 2021 11:43
Meslek: Asker
Yaş: 35
İleti: 26
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İzmir/Foça

REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

Cevap: Parçalama konusunda yardım.

İleti#25)  halily » 06 Haz 2021 14:46

eklediğim dosyadaki kodu denediniz mi? o kodda sorun çıktı mı?
A1, B1 ve C1 deki dağılımlar doğru çıkıyor mu?
sorun çıkarabilecek verilerde denediniz mi?
Kullanıcı avatarı
halily
Site Dostu
 
Kayıt: 23 May 2019 11:16
Meslek: yok
Yaş: 41
İleti: 527
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: adana

Cevap: Parçalama konusunda yardım.

İleti#26)  armedi4 » 06 Haz 2021 14:49

Denedim. Mantığınıda anladım geliştirmeye çalışıyorum. Çok hakim olmadığımdan uzun sürecek biraz ama çok yararı oldu bana. Teşekkür ederim.
Kullanıcı avatarı
armedi4
Yeni Başlamış
 
Kayıt: 27 May 2021 11:43
Meslek: Asker
Yaş: 35
İleti: 26
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İzmir/Foça

REKLAM
ETA - Excel Konsolide Raporlama
ETA Excel Personel Entegre Raporu

Cevap: Parçalama konusunda yardım.

İleti#27)  halily » 06 Haz 2021 15:01

rica ederim
iyi çalışmalar
Kullanıcı avatarı
halily
Site Dostu
 
Kayıt: 23 May 2019 11:16
Meslek: yok
Yaş: 41
İleti: 527
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: adana

Cevap: Parçalama konusunda yardım.

İleti#28)  armedi4 » 06 Haz 2021 15:04

Sayıdizisi içinde tek haneli rakamların (1,2,3,4,5,6,7,8,9) başına 0 ekleyerek tüm rakamları 2 haneye çıkarabilirsek hiçbir sıkıntı çıkmayacak aslında nekadar kombinasyon varsa hepsini ayırt edebiliriz geçerli olsun veya olmasın.

tek haneli olup olmadığını yani 1'den 9'a kadar olan sayı varsa içinde onların başlarına 0 ekleyerek tamamen yeni bir sayı dizisi ve yeni oluşturulan sayı dizisini 2'şerli olmak üzere ayırmak daha kolay olacak.

bakalım yapabilecekmiyim. :)
Kullanıcı avatarı
armedi4
Yeni Başlamış
 
Kayıt: 27 May 2021 11:43
Meslek: Asker
Yaş: 35
İleti: 26
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İzmir/Foça

Cevap: Parçalama konusunda yardım.

İleti#29)  halily » 06 Haz 2021 15:17

zaten sorun tek hane mi iki hane mi onu anlamakta değil mi?
verilerin geldiği yerde mi ayarlanacak bu özellik?
Kullanıcı avatarı
halily
Site Dostu
 
Kayıt: 23 May 2019 11:16
Meslek: yok
Yaş: 41
İleti: 527
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: adana

Cevap: Parçalama konusunda yardım.

İleti#30)  armedi4 » 06 Haz 2021 15:32

ben bu sayı dizisini bir text dosyası içinden çekicem dediğim gibi.
verilerin geldiği yerdemi derken ne demek istediğinizi anlamadım açıkcası.

sorun sizinde dediğiniz gibi tek karaktermi çift karaktermi problemi. sizin kodlarda aklıma geldiği kadar denedim. herhangi bir problem yaşamadım aslında ama ilk 4 karakteri ele alıp bunlar çift karakterli sayımı değilmi onları değerlendirse mesela

1213 , 1415, 1819 vs.

birbirini takip eden sayılarsa çift karakter kabul et
takip etmiyorsa tek kabul et denebilir.

bu bir yerde hata verirmi anlık düşünerek cevaplıyorum. şuan emin değilim :)
Kullanıcı avatarı
armedi4
Yeni Başlamış
 
Kayıt: 27 May 2021 11:43
Meslek: Asker
Yaş: 35
İleti: 26
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İzmir/Foça

Cevap: Parçalama konusunda yardım.

İleti#31)  halily » 06 Haz 2021 18:10

belli bir kalıba oturtamadım bir türlü
D121920212223 gibi bir ifadenin açılımı her koşulda 1,2,19.... da 12,19.... da olabiliyor. yaptığınız hiç bir açıklama maalesef böyle bir durumda ne yapılacağını belirtmiyor.
çalışmanızın amacını ve sisteminizin mantığını çözemediğim için daha fazla yardım edemiyorum maalesef
Kullanıcı avatarı
halily
Site Dostu
 
Kayıt: 23 May 2019 11:16
Meslek: yok
Yaş: 41
İleti: 527
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: adana

Cevap: Parçalama konusunda yardım.

İleti#32)  armedi4 » 06 Haz 2021 20:25

halily yazdı:D121920212223 gibi bir ifadenin açılımı her koşulda 1,2,19.... da 12,19.... da olabiliyor. yaptığınız hiç bir açıklama maalesef böyle bir durumda ne yapılacağını belirtmiyor.


bu hususu nasıl çözebiliriz düşünüyorum ama bulamadım bende

ayrıca 20 ile başlayan dizilerde de hata verdi

D202122232425 ==> Bu durumda 0 rakamı kriter içinde olmadığından ilk iki karakter alınabilirmi
D101112131415 ==> aynı durum bundada var
D2122232425 ==> ilk karakter hiçbir zaman 3 ve 3ten büyük olamaz. dolayısıyla ilk karakter 2 olduğunda 2. karakter 6'dan 9'a kadar bir rakamsa ilk karakter tek karakter kabul edilmeli. diğer şartlarda ilk iki karakterden oluşan rakam ile 3'üncü ve 4.karakterden oluşan rakamın birbirine büyük/küçük olması sorgulanmalı ve ilk iki karakterdeki rakam ile 25 arasında ise 2 haneli diğer durumlarda tek hane olarak alınmalı

böyle bir mantık yürüttüm ama siz ne dersiniz bu değerlendirmelere?
Kullanıcı avatarı
armedi4
Yeni Başlamış
 
Kayıt: 27 May 2021 11:43
Meslek: Asker
Yaş: 35
İleti: 26
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İzmir/Foça

Cevap: Parçalama konusunda yardım.

İleti#33)  halily » 12 Haz 2021 10:21

aşağıdaki fonksiyonu dener misiniz?
şimdilik tersten sıralıyor ama sonuç tersten de olsa doğru ise o kısım halledilebilir bence
Kod: Tümünü seç
Function SayiAl() '(ByVal Dgr As String)
Dim Rng  As Range
Set Rng = Sheet1.Range("A1:G1")
Sheet1.Range("A2:A1000").ClearContents
Dim Str As Long
Str = 2
For Each cll In Rng
Dgr = Mid(cll.Value, 2)
Uzn = Len(Dgr)
Str = Str + 1
  t = 1
tmp = Mid(Dgr, Uzn - 1, 2) + 1
    If Mid(Dgr, Uzn - 1, 1) > 2 Then
        For x = 1 To Uzn
            Sheet1.Range("A" & Str) = Mid(Dgr, x, 1)
            Str = Str + 1
        Next x
    Else
        For x = Uzn To 2 Step -1
        Z = Int(Mid(Dgr, x - 1, 2))
            If Z >= tmp Then t = 0
                Sheet1.Range("A" & Str) = Mid(Dgr, x - t, t + 1)
                tmp = Int(Mid(Dgr, x - t, t + 1))
                x = x - t
        Str = Str + 1
        Next x
    End If
If x = 1 Then
    Sheet1.Range("A" & Str) = Mid(Dgr, x - t, t + 1)
    Str = Str + 1
End If
Next cll
End Function
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
halily
Site Dostu
 
Kayıt: 23 May 2019 11:16
Meslek: yok
Yaş: 41
İleti: 527
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: adana

Cevap: Parçalama konusunda yardım.

İleti#34)  halily » 12 Haz 2021 11:30

fonksiyonun düzeltilmiş hali
Kod: Tümünü seç
Function SayiAl() '(ByVal Dgr As String)
Dim Rng  As Range
Set Rng = Sheet1.Range("A1:G1")
Sheet1.Range("A2:A1000").ClearContents
Dim Str As Long
Str = 2
hepsi = ""
For Each cll In Rng
Dgr = Mid(cll.Value, 2)
Uzn = Len(Dgr)
  t = 1
tmp = Mid(Dgr, Uzn - 1, 2) + 1
TmpHcr = ""
    If Mid(Dgr, Uzn - 1, 1) > 2 Then
        For x = 1 To Uzn
            TmpHcr = Mid(Dgr, x, 1) & "," & TmpHcr
        Next x
    Else
        For x = Uzn To 2 Step -1
        Z = Int(Mid(Dgr, x - 1, 2))
            If Z >= tmp Then t = 0
                TmpHcr = Mid(Dgr, x - t, t + 1) & "," & TmpHcr
                tmp = Int(Mid(Dgr, x - t, t + 1))
                x = x - t
        Next x
    End If
If x = 1 Then
    TmpHcr = Mid(Dgr, x - t, t + 1) & "," & TmpHcr
End If
hepsi = hepsi & TmpHcr
Next cll
Dim HpsDz As Variant
HpsDz = Split(hepsi, ",")

    For Each element In HpsDz
        Sheet1.Range("A" & Str) = element 'Mid(Dgr, x - t, t + 1)
        Str = Str + 1
    Next element
End Function
Kullanıcı avatarı
halily
Site Dostu
 
Kayıt: 23 May 2019 11:16
Meslek: yok
Yaş: 41
İleti: 527
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: adana

Cevap: Parçalama konusunda yardım.

İleti#35)  halily » 12 Haz 2021 13:21

kodun son hali
A1-G1 arasında girdiğiniz değerlere göre işlem yapar
değerler arasında satır atlayarak
Kod: Tümünü seç
Function SayiAlBosluk() '(ByVal Dgr As String)
Dim Rng  As Range
Set Rng = Sheet1.Range("A1:G1")
Sheet1.Range("A2:A1000").ClearContents
Dim Str As Long

Hepsi = ""
For Each cll In Rng
Dgr = Mid(cll.Value, 2)
Uzn = Len(Dgr)
  t = 1
tmp = Mid(Dgr, Uzn - 1, 2) + 1
TmpDgr = ""
    If Mid(Dgr, Uzn - 1, 1) > 2 Then
        For x = 1 To Uzn
            TmpDgr = TmpDgr & "," & Int(Mid(Dgr, x, 1))
        Next x
        TmpDgr = Mid(TmpDgr, 2)
    Else
        For x = Uzn To 2 Step -1
        Z = Int(Mid(Dgr, x - 1, 2))
            If Z >= tmp Then t = 0
                TmpDgr = Int(Mid(Dgr, x - t, t + 1)) & "," & TmpDgr
                tmp = Int(Mid(Dgr, x - t, t + 1))
                x = x - t
        Next x
    End If
If x = 1 Then
    TmpDgr = Mid(Dgr, x - t, t + 1) & "," & TmpDgr
End If
Hepsi = Hepsi & "," & TmpDgr
Next cll
Hepsi = Mid(Hepsi, 2)
Dim DzHepsi As Variant
DzHepsi = Split(Hepsi, ",")

Dim Item As Variant
Str = 2
For Each Item In DzHepsi
    Sheet1.Range("A" & Str) = (Item)
    Str = Str + 1
Next
End Function
değerler arasında satır atlamadan
Kod: Tümünü seç
Function SayiAl() '(ByVal Dgr As String)
Dim Rng  As Range
Set Rng = Sheet1.Range("A1:G1")
Sheet1.Range("A2:A1000").ClearContents
Dim Str As Long

Hepsi = ""
For Each cll In Rng
Dgr = Mid(cll.Value, 2)
Uzn = Len(Dgr)
  t = 1
tmp = Mid(Dgr, Uzn - 1, 2) + 1
TmpDgr = ""
    If Mid(Dgr, Uzn - 1, 1) > 2 Then
        For x = 1 To Uzn
            TmpDgr = TmpDgr & "," & Int(Mid(Dgr, x, 1))
        Next x
        TmpDgr = Mid(TmpDgr, 2)
    Else
        For x = Uzn To 2 Step -1
        Z = Int(Mid(Dgr, x - 1, 2))
            If Z >= tmp Then t = 0
                TmpDgr = Int(Mid(Dgr, x - t, t + 1)) & "," & TmpDgr
                tmp = Int(Mid(Dgr, x - t, t + 1))
                x = x - t
        Next x
    End If
If x = 1 Then
    TmpDgr = Mid(Dgr, x - t, t + 1) & "," & TmpDgr
End If
Hepsi = Hepsi & "," & TmpDgr
Next cll
Hepsi = Mid(Hepsi, 2)
Dim DzHepsi As Variant
DzHepsi = Split(Hepsi, ",")

Dim Item As Variant
Str = 2
For Each Item In DzHepsi
If Len(Item & "") > 0 Then
    Sheet1.Range("A" & Str) = Item
    Str = Str + 1
End If
Next
End Function
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
halily
Site Dostu
 
Kayıt: 23 May 2019 11:16
Meslek: yok
Yaş: 41
İleti: 527
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: adana

Cevap: Parçalama konusunda yardım.

İleti#36)  armedi4 » 15 Haz 2021 22:32

Şimdi gördüm. Yarın bakıp haber vereceğim. Teşekkür ederim.
Kullanıcı avatarı
armedi4
Yeni Başlamış
 
Kayıt: 27 May 2021 11:43
Meslek: Asker
Yaş: 35
İleti: 26
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İzmir/Foça

Cevap: Parçalama konusunda yardım.

İleti#37)  armedi4 » 16 Haz 2021 21:44

Şimdi inceleme fırsatı buldum. Elinize emeğinize sağlık. 1219'u 1,2,19 yada 12,19 olarak ayırt edebilmesinin mümkün olmadığına kanaat getirdim bende artık. Bu haliylede kullansam şuan işimi görür. Sıkıntılı olan sayı dizileri geldiğinde farkederim zaten.

Çok teşekkür ederim. İyi çalışmalar.
Kullanıcı avatarı
armedi4
Yeni Başlamış
 
Kayıt: 27 May 2021 11:43
Meslek: Asker
Yaş: 35
İleti: 26
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İzmir/Foça

Önceki

Forum Genel Makro Soruları

Online Kullanıcılar

Bu forumu görüntüleyenler: AhrefsBot ve 1 misafir

Bumerang - Yazarkafe