• DİKKAT

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

Soru Vba Union Dizi yardım

Buyurun.:cool:
Kod:
Dim dizi()
dizi = Range("A1:C50").Value
 
@Orion1 hocam sadece tek alan olarak yapmışsınız.Örnekte 3 aralık vardı.
 
A:C aralığı var.Yani 3 sütunda diziye alıyor verileri.
Ama sizin istediğiniz farklı bir şey sanırım.
 
Alttaki gibi yaptım.işin içine döngü girdi.Döngüsüz olmalı.

Ve Union(Range("A3:A6")) olarak tek aralık için hata oluyor.

Acaba Union için en az iki aralık yada alanmı olmalı?

C#:
Private Sub CommandButton1_Click()

    Dim alan As Range
    Dim veri As Range
    Dim say As Integer
   
    Set alan = Union(Range("A3:A6"), Range("A10:A13"), Range("A16:A20"))  
    ReDim arr(1 To alan.Count, 1 To 1)
 
    For Each veri In alan
        say = say + 1
        arr(say, 1) = veri
    Next
   
    [B:B] = Empty
    Range("B3").Resize(say, 1) = arr

    Set alan = Nothing: Set veri = Nothing: Erase arr

End Sub
 
Son düzenleme:
Benim yolladığım cevapta olmaz istediğiniz.
Başka bir yöntemi varmıdır,onu da bilmiyorum.
Ama şöyle bir deneyin isterseniz.
Kod:
Set alan = Union(Range("A3:A6,A10:A13,A16:A20"))
 
Benim yolladığım cevapta olmaz istediğiniz.
Başka bir yöntemi varmıdır,onu da bilmiyorum.
Ama şöyle bir deneyin isterseniz.
Kod:
Set alan = Union(Range("A3:A6,A10:A13,A16:A20"))

Kodu denedim hata verdi.
Alttaki kodu çalıştırırsanız A sütunundaki verilerin tamamının gelmediğini göreceksiniz.


C#:
Private Sub CommandButton1_Click()

    Dim alan As Range


    [B:B] = Empty

    Set alan = Union(Range("A3:A6"), Range("A10:A13"), Range("A16:A20"))
    Range("B3").Resize(500, 1) = alan.Value

   
End Sub
 
Union yerine Array yazmayı deneyin.
 
Böyle yaparsanız istediğiniz sonuca ulaşırsınız.:cool:
Kod:
Set alan = Range("A3:A6,A10:A13,A16:A20")
 
Yapmak istediğiniz biçimde olmaz belki ama şu şekilde yazarsanız olur, iki boyutlu dizi oluşur.
Kod:
alan = Array(Range("A3:A6").Value, Range("A10:A13").Value, Range("A16:A20").Value)

Bunu bende yapmıştım.Tek seferde hücreye aktatılmıyor.Hatta döngü ilede aktarmayı başaramadım :)
 
Buyurun.:cool:
Kod:
Set alan = sheets("Sayfa1").Range("A3:A6,A10:A13,A16:A20")
 
Buyurun.:cool:
Kod:
Set alan = sheets("Sayfa1").Range("A3:A6,A10:A13,A16:A20")
Saşol hocam.Bu şekilde range içindeki aralıklar sayfa1 e ait oluyor yani öylemi.
Peki A13 yerine son diye değişken tanımlasak ve 13 yerne son değişkenini nasıl kullanırız.

sheets("Sayfa1").Range("A3:A16,B3:B16,C3:C16")
Burdaki a16,b16 ve c16 yerine 16 yerine son değişken nasıl kullanılır.
 
Evet,Sayfa1 deki verileri alıyor.
Sonsat değişkeni için.:cool:
Kod:
sheets("Sayfa1").Range("A3:A" & sonsat & ",B3:B" & sonsat & ",C3:C" & sonsat)
 
Buyurun.:cool:
Kod:
Set alan = sheets("Sayfa1").Range("A3:A6,A10:A13,A16:A20")
Birde zaten denemede bu kodla alınan verilerde diziye aktarırken tümü aktarılmıyordu.Kafamı karıştırdınız iyice :)
Benim sorunum dizi içe alırken tüm verilerin alınması döngüsüz.Yoksa union ilede oluyor aynı yöntem :)
 
Geri
Üst