Soru Vba Union Dizi yardım

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,239
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Buyurun.:cool:
Kod:
Dim dizi()
dizi = Range("A1:C50").Value
 
Katılım
5 Kasım 2006
Mesajlar
603
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
@Orion1 hocam sadece tek alan olarak yapmışsınız.Örnekte 3 aralık vardı.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,239
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
A:C aralığı var.Yani 3 sütunda diziye alıyor verileri.
Ama sizin istediğiniz farklı bir şey sanırım.
 
Katılım
5 Kasım 2006
Mesajlar
603
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
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:

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,239
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
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"))
 
Katılım
5 Kasım 2006
Mesajlar
603
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
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
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,520
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Union yerine Array yazmayı deneyin.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,239
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Böyle yaparsanız istediğiniz sonuca ulaşırsınız.:cool:
Kod:
Set alan = Range("A3:A6,A10:A13,A16:A20")
 
Katılım
5 Kasım 2006
Mesajlar
603
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
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 :)
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,239
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Buyurun.:cool:
Kod:
Set alan = sheets("Sayfa1").Range("A3:A6,A10:A13,A16:A20")
 
Katılım
5 Kasım 2006
Mesajlar
603
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
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.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,239
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
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)
 
Katılım
5 Kasım 2006
Mesajlar
603
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
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 :)
 
Üst