• DİKKAT

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

Farklı dizileri birleştirerek tek dizi yapmak

Katılım
16 Ekim 2011
Mesajlar
131
Excel Vers. ve Dili
2007
Merhabalar,
arr1(1,2,3,4,5,6)
arr2(10,11,12,13,14,....,55)
bu iki diziyi ardı sıra birleştirerek aşağıda ki diziyi nasıl elde edebilirim?
arr3(1,2,3,4,5,6,10,11,12,13,14,.....,55)
 
Bu kod neden çalışmıyor olabilir?

Sub deneme()

Dim arr1(1, 2, 3, 4, 5, 6) As Integer
Dim arr2(10, 11, 12, 13, 14, 15) As Integer
ReDim arr3(1 To 12) As Integer

arr3 = Split(Join(arr1, ",") & "," & Join(arr2, ","), ",")
MsgBox arr3(1)

End Sub
 
Aşağıdaki gibi olmalı

Kod:
Sub deneme()
    Dim arr1 As Variant
    Dim arr2 As Variant
    Dim arr3 As Variant
    arr1 = Array(1, 2, 3, 4, 5, 6)
    arr2 = Array(10, 11, 12, 13, 14, 15)
    arr3 = Split(Join(arr1, ",") & "," & Join(arr2, ","), ",")
    MsgBox arr3(1)
End Sub
 
Muzaffer bey ilginize teşekkür ederim. verdiğiniz kod çalışıyor zira benim ayrıca hazırladığım double değişkenlerle dolu 2 farklı dizim var, aynı sistemde aşağıda ki kod neden çalışmıyor anlamıyorum.
aldığım uyarı: " invalid procedure call or argument"
kod ise:

Dim sonTekBoyutDizi As Variant
sonTekBoyutDizi = Split(Join(sonTekBoyutDizi1, ",") & "," & Join(sonTekBoyutDizi2, ","), ",")

sonTekBoyutDizi1 ve sonTekBoyutDizi2 benim bahsettiğim veri ile dolu olan birleştirmek istediğim iki dizi
 
O zaman herhalde sizin sonTekBoyutDizi1 ve sonTekBoyutDizi2 dizileriniz boyutlu dizi olmalı.
Mümkünse dosyanızı ekleyin kontrol edelim. Dosyanızda önemli bilgiler varsa silebilirsiniz sadece kod kısmı kalsa yeterli.
 
Muzaffer bey Kodu Autocad VBA da geliştiriyorum, bahse konu birleştirmeyi istediğim double değişkenli 2 dizi öncesinde oluşturduğum 2 boyutlu bir diziden ayırarak tek boyutlu hale getiriyorum aşağıda ki kod ile. Elimde sonTekBoyutDizi1 ve sonTekBoyutDizi2 diziler olmuş oluyor 1 boyutlu haliyle. bunları birleştirmem gerekiyor.

ReDim sonTekBoyutDizi1(1 To 2 * noktaSayisi1) As Double
Dim k As Integer
k = 1
For i = 1 To noktaSayisi1 Step 1
For j = 1 To 2 Step 1
sonTekBoyutDizi1(k) = noktalarDiziCokluRdenOnce(i, j)
k = k + 1
Next j
Next i
 
msgbox join(sonTekBoyutDizi1,",")

komutu çalışırsa ekran görüntüsünü atar mısınız?
 
sonTekBoyutDizi1 de sorun yok.

Aşağıdaki gibi ikisini de sonTekBoyutDizi1 yapın
Kod:
sonTekBoyutDizi = Split(Join(sonTekBoyutDizi1, ",") & "," & Join(sonTekBoyutDizi1, ","), ",")

Bir de ikisini de sonTekBoyutDizi2 yapın.

Kod:
sonTekBoyutDizi = Split(Join(sonTekBoyutDizi2, ",") & "," & Join(sonTekBoyutDizi2, ","), ",")

hangisinde hata verecek ona bakalım.
 
msgbox join(sonTekBoyutDizi1,",")

komutu çalışırsa ekran görüntüsünü atar mısınız?
sonTekBoyutDizi1 de sorun yok.

Aşağıdaki gibi ikisini de sonTekBoyutDizi1 yapın
Kod:
sonTekBoyutDizi = Split(Join(sonTekBoyutDizi1, ",") & "," & Join(sonTekBoyutDizi1, ","), ",")

Bir de ikisini de sonTekBoyutDizi2 yapın.

Kod:
sonTekBoyutDizi = Split(Join(sonTekBoyutDizi2, ",") & "," & Join(sonTekBoyutDizi2, ","), ",")

hangisinde hata verecek ona bakalım.
yine aynı hatayı veriyor.
Dim sonTekBoyutDizi As Variant
sonTekBoyutDizi = Split(Join(sonTekBoyutDizi2, ",") & "," & Join(sonTekBoyutDizi2, ","), ",")
ya da
sonTekBoyutDizi = Split(Join(sonTekBoyutDizi1, ",") & "," & Join(sonTekBoyutDizi1, ","), ",")

ben tüm dizileri ReDim olarak tanımladım bu anlamda bi sorun olabilir mi?
 
Kod:
    Dim yeniDizi
    yeniDizi = sonTekboyutDizi1
    ReDim Preserve yeniDizi(1 To UBound(yeniDizi) + UBound(sonTekboyutdizi2))
    For i = 1 To UBound(sonTekboyutdizi2)
        yeniDizi(UBound(sonTekboyutDizi1) + i) = sonTekboyutdizi2(i)
    Next i
 
Kod:
    Dim yeniDizi
    yeniDizi = sonTekboyutDizi1
    ReDim Preserve yeniDizi(1 To UBound(yeniDizi) + UBound(sonTekboyutdizi2))
    For i = 1 To UBound(sonTekboyutdizi2)
        yeniDizi(UBound(sonTekboyutDizi1) + i) = sonTekboyutdizi2(i)
    Next i

Muzaffer bey çalıştı ellerinize sağlık, müsaitseniz bu kodu biraz açıklarsanız mutlu olurum. birde Split(Join( ... metodunu neden kullanamadık acaba?
Saygılar. tekrar teşekkür ederim.
 
Split(Join( ... metodunu neden kullanamadık acaba?

Kodda da görebiliceğiniz gibi join stringe çevirebildiği ifadeleri birleştiriyor. Double değişkenlerde hata veriyor (muş).

Kod:
Sub m()

    Dim al(1 To 2)
    al(1) = 1.25
    al(2) = 2.5
    MsgBox Join(al, ",")

    Dim ver(1 To 2) As Double
    ver(1) = 1.25
    ver(2) = 2.5
    MsgBox Join(ver, ",")

End Sub
 
Geri
Üst