• DİKKAT

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

Rastgele oluşan değerleri makro ile seçip kopyalatmak

  • Konbuyu başlatan Konbuyu başlatan ahzola
  • Başlangıç tarihi Başlangıç tarihi
Katılım
17 Ekim 2011
Mesajlar
490
Excel Vers. ve Dili
Excel 2003 - Türkçe
Günaydınlar,

B3:O39 aralığında
değer olan alanı seç makrosu lazım.
Aralarda boşluklar var ise onlarda seçilecek
(Geometrik olacak kare yada diktörgen gibi)

yardımlarınızı bekliyorum.
 

Ekli dosyalar

Son düzenleme:
Anlaşılmadı endişesi ile dosya ekledim.
 
B3:O39 aralığında
- değer olanları seç
- boşları seç
demek B3:O39'u seç demektir.

yoksa değil mi?
 
Sayın mancubus

eki inceleyebilirmisiniz?

ilk dosya ile satır ve sütun nolara farklı
o kısma takılmayın.
 

Ekli dosyalar

bana bir kural söylemeniz lazım.

hangi koşulda hangileri seçilecek.

o hücrelerin yer aldığı alan bir defa da mı seçilecek, yoksa o alan içinde kritere uyan hücreler tek tek seçilerek mi işlem yapılacak.

dosyaya dip not koymuşsunuz. o dipnota göre diğer sorunuza verdiğim cevaptaki Areas kullanılabilir.
 
3 örnek verdim ya;

bu 3 örnekle gelen verileri
aynı sayfada, sallıyorum T X S M..... sütunlarından
teker teker elde ediyoruz yani üç seferde,

İlk örnek geldi diyelim.
(E4 H12 aralığına)
ilk örneği seçecek. Kopyalayacak
Ben bunu gerekli yere götürüp yapıştıracağım.
sonra ilgili hücreleri buton ile verilerden temizleyeceğim.

sonra ikincisi gelecek
(E4:G 15 aralığına)
ikinci örneği seçecek. Kopyalayacak
Ben bunu gerekli yere götürüp yapıştıracağım.
sonra ilgili hücreleri buton ile verilerden temizleyeceğim.

sonra ücüncüsü geldi diyelim
(E4:I16 aralığına)
üçüncüsün seçecek. Kopyalayacak
Ben bunu gerekli yere götürüp yapıştıracağım.
sonra ilgili hücreleri buton ile verilerden temizleyeceğim.

bu şekilde devam edecek.

bir nevi raslantısal gelecek bende bilmiyorum.

Bilmiyorum diyorum ama tahmin edebiliyorum.
şöyle ki

E4 ten başlayacağı kesin
en fazlada J sütununa gider dersek...
ve E4 itibari ile satır olarakta 15 satır yazar dersek....

bize E4 J19 aralığını verir.
İLk mesajımda da bu mantıkla örenk vermiştim zaten.

O halde E4 ile J19 aralığındaki değer olan hücreleri ALAN OLARAK seç diyeceğiz.
aklıma birtek bu geliyor.

Şimdi tekrar fikirlerinizi bekiliyorum. İnşallah bu kez anlatabildim.
 
aşağıdaki kod Sayfa1'deki belirtilen alandaki dolu hücreleri Sayfa2'deki kendi adreslerine kopyalar.

Kod:
Sub Belli_Araliktaki_Hucreleri_Aktar()
  
    Dim rng As Range, i As Long

    Set rng = Union(Worksheets("Sayfa1").Range("E4:J19").Cells.SpecialCells(xlCellTypeConstants, 23), _
                Worksheets("Sayfa1").Range("E4:J19").Cells.SpecialCells(xlCellTypeFormulas, 23))
    With rng
        For i = 1 To .Areas.Count
            .Areas(i).Copy Worksheets("Sayfa2").Range(.Areas(i).Address)
        Next
    End With

End Sub
 
bu kod ile de o hücreleri seçebilirsiniz. ancak çoklu seçim olduğu için COPY yöntemini kullanamazsınız.

Kod:
Sub Belli_Araliktaki_Hucreleri_Sec()
  
    Dim rng As Range

    Set rng = Union(Worksheets("Sayfa1").Range("E4:J19").Cells.SpecialCells(xlCellTypeConstants, 23), _
                Worksheets("Sayfa1").Range("E4:J19").Cells.SpecialCells(xlCellTypeFormulas, 23))
    rng.Select

End Sub
 
Sayın mancubus

Hem sayfa1 hem sayfa2 de denememe rağmen..
Kodlar bende çalışmadı. Daha doğrusu ben çalıştıramadım.
Dolayısı ile de kodların işlevini tam olarak okuyamadım.

Sub Belli_Araliktaki_Hucreleri_Aktar makrosunu yazmanız üzerine gözlemlediğim o ki ben meramımı anlatamamışım.
Bahse konu verileri sayfa içinde üreten bir makromuz var zaten.
Makroları çalıştaramadığımı belirtmiş idim
Belkide benim düşüncemin aksine farklı bir uygulama var makrolarda.

Kodları dosyaya uygulayabilirseniz daha sağlıklı değerlendirme yapabiliriz.

Saygılarımla.


Diğer arkadşlarında fikir verebilmesi adına
dilimin döndüğünce konuyu tekrardan izah etmeye çalışayım.

Bir kitabımız var bu kitapta
4 adet makromuz var bu makrolar sırası ile
sabit sütunlara girilen değişken verileri işliyor ve
A1 hücresinden itibaren yazmaya başlıyor olsun.

sallıyorum.

ilk çalıştırmamda verileri "A1:C7" aralığına yazdı(arada boş hücreler olabiliyor önemli değil onlarda seçilecek)
ben bu veriyi alıp kullanıyorum. Makroyu ismemdeki amaç zaten burada 4 tane makro kullanıyorum bir makrom daha olsun
beni seç kopyala angaryasından kurtarsın içindir. Lakin sorun şu ki veriler A1 den yazmaya başlamasına rağmen aynı satır ve sütun sayısı ile gelmiyor...

1. çalıştırmamda verileri "A1:C7" aralığına yazdı(arada boş hücreler olabiliyor önemli değil onlarda seçilecek)
2. çalıştırmamda verileri "A1:F9" aralığına yazdı(arada boş hücreler olabiliyor önemli değil onlarda seçilecek)
3. çalıştırmamda verileri "A1:E11" aralığına yazdı(arada boş hücreler olabiliyor önemli değil onlarda seçilecek)
4. çalıştırmamda verileri "A1:B10" aralığına yazdı(arada boş hücreler olabiliyor önemli değil onlarda seçilecek)
5. çalıştırmamda verileri "A1:E8" aralığına yazdı(arada boş hücreler olabiliyor önemli değil onlarda seçilecek)
.....................
Bu şekilde devam edip gidecek.

Bu durumdat Ben kırmızı ile belirttiğim hücre aralığındaki verileri diğer 4 makromun yanına 5. makro ilave ederek
Sectirip kopyalatabilirmiyim?

Lütfen fikirlerinizi beyan edin.
 
şimdi, tahmin ederek çözüm üretmek zor bir olay.
belki de ben anlamıyorumdur.

2 tahmine göre hazırladığım ve çalıştığını test ederek gördüğüm kodlar aşağıda ve dosya ekte.
1. varsayımda Sayfa1'den Sayfa2'ye, ikinci varsayımda Sayfa3'ten Sayfa4'e kopyalama işlemi yapılmaktadır.
siz kodlarda kendi sayfa isimlerinize göre gerekli uyarlamayı yapmalısınız.

Kod:
Sub Calisma_Sonrasi_Alan_Kopyala_v1()
'Varsayımlar:
'1- kopyalanacak alan Sayfa1'de A1 hücresinden başlamaktadır.
'2- Sayfa1'te kopyalanması arzu edilen veriler dışında veri bulunmamaktadır.

    Dim syf1 As Worksheet, syf2 As Worksheet
    Dim KopyAlan As Range
    Dim SonSat As Long, SonSut As Long
    
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With
    
    Set syf1 = Worksheets("Sayfa1")
    Set syf2 = Worksheets("Sayfa2")
    
    With syf1
        SonSat = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
        SonSut = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column
        Set KopyAlan = .Range(.Cells(1, 1), .Cells(SonSat, SonSut))
    End With
    
    KopyAlan.Copy syf2.Range("A1")

    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With

End Sub





Sub Calisma_Sonrasi_Alan_Kopyala_v2()
'Varsayımlar:
'1- kopyalanacak alan Sayfa3'te herhangi bir hücreden başlamaktadır.
'2- Sayfa3'te kopyalanması arzu edilen veriler dışında veri bulunmamaktadır.

    Dim syf3 As Worksheet, syf4 As Worksheet
    Dim KopyAlan As Range
    Dim IlkSat As Long, IlkSut As Long, SonSat As Long, SonSut As Long
    
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With
    
    Set syf3 = Worksheets("Sayfa3")
    Set syf4 = Worksheets("Sayfa4")
    
    With syf3
        IlkSat = .Cells.Find("*", , , , xlByRows, xlNext).Row
        IlkSut = .Cells.Find("*", , , , xlByColumns, xlNext).Column
        SonSat = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
        SonSut = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column
        Set KopyAlan = .Range(.Cells(IlkSat, IlkSut), .Cells(SonSat, SonSut))
    End With
    
    KopyAlan.Copy syf4.Cells(IlkSat, IlkSut) 'Sayfa3'te olduğu alanın aynısına Sayfa4'te kopyala
    'KopyAlan.Copy syf4.Cells(1, 1) 'Sayfa4'te A1'e kopyala
    
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With

End Sub
 

Ekli dosyalar

Son düzenleme:
en hafif tabirle benimle kafa buluyor olmalısınız...



Günaydınlar,

B3:O39 aralığında
değer olan alanı seç makrosu lazım.
Aralarda boşluklar var ise onlarda seçilecek
(Geometrik olacak kare yada diktörgen gibi)

yardımlarınızı bekliyorum.


3 örnek verdim ya;

bu 3 örnekle gelen verileri
aynı sayfada, sallıyorum T X S M..... sütunlarından
teker teker elde ediyoruz yani üç seferde,

İlk örnek geldi diyelim.
(E4 H12 aralığına)
ilk örneği seçecek. Kopyalayacak

sonra ikincisi gelecek
(E4:G 15 aralığına)
ikinci örneği seçecek. Kopyalayacak

sonra ücüncüsü geldi diyelim
(E4:I16 aralığına)
üçüncüsün seçecek. Kopyalayacak

...
...


Sayın mancubus

1. çalıştırmamda verileri "A1:C7" aralığına yazdı(arada boş hücreler olabiliyor önemli değil onlarda seçilecek)
2. çalıştırmamda verileri "A1:F9" aralığına yazdı(arada boş hücreler olabiliyor önemli değil onlarda seçilecek)
3. çalıştırmamda verileri "A1:E11" aralığına yazdı(arada boş hücreler olabiliyor önemli değil onlarda seçilecek)
4. çalıştırmamda verileri "A1:B10" aralığına yazdı(arada boş hücreler olabiliyor önemli değil onlarda seçilecek)
5. çalıştırmamda verileri "A1:E8" aralığına yazdı(arada boş hücreler olabiliyor önemli değil onlarda seçilecek)
.....................
Bu şekilde devam edip gidecek.


Sayın mancubus

Her seferinde SABİT (B2:H23) aralığını kopyalayacak bir kod istirham etmekteyim.
Dikkat ettiyseniz diğer sayfalarla bi işimiz yok.
Saygılarımla.

Edit: Kodlar modülde
 
konu ile tekrar ilgilenmeyeceğim.

lütfen pm göndermeyin...
 
Sayın mancubus
Değerli üstad.

Dün sabah actım konuyu.
birgünden fazla olmuş.
Ve birdünya yazı yazmışım.
Emek verdiniz bir sürü zaman harcadınız.
Defalarca kod yazdınız. Ama istediğimizi sonucu alamadık.
Bende madem ki öyle olmuyor. Sabit şekilde olsun ki
ben diğer kısımlarını manuel yapayım diye son mesajı yazdım.

"Kafa buluyor" değilde yeteri kadar açıklama yapamıyorsunuz
yada İlk mesajla son mesajınızın arasında çelişkiler var deseydiniz.

Hoş bunu belirttim arada. Hücre adreslerinin önemi yok diye.

Saygıdeğer insan. Birçok kez yardımınızı gördüm. Bu kelimeyi
hiç etmeseydiniz keşke. Ben 40 yaşında bir insanım. Bilgim yeterli
olmayabilir. Ona amenna. Ama neden kafa bulayım ki.
Keşke başka bir user yazsa idi.:(

Gerek bu başlıkta gerekse diğer başlıklarda gördüğüm yardımlarınız
için tekrarlar teşekkür ediyorum.

Allahı sizi hayatın dikenli yollarına hiç uğratmasın inşallah.
Saygılarımla.

Sayın yönetimden konunun kapatılmasını istirham ediyorum.
 
Geri
Üst