• DİKKAT

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

satır sütun değişimleri ve matris oluşturmaa

Katılım
3 Nisan 2011
Mesajlar
11
Excel Vers. ve Dili
sdsdsda
Arkdaşlar merhaba elimde 1 gün 24 saat ve her saate karşılık gelen bir adet veri bulnmakta (sütun olarak) ben ise yeni sayfamda saatleri satır ve o saate karşılık gelen veriyi yine satır olarak göstermek istiyorum..fakat bunu makro ile yapmayı beceremedim.. mantığını anlatacak olursam 24 saatlik sütun verisini yeni sayfada oluşturduğum matrise satır olarak içeriği ile birlikte kopyalaması (formül ile hesaplanan veri içeriği oluşturmaktadır)
yardımcı olrsanız sevinirim..
teşekkürler
Io (hesaplanan veri) 1 gün içerisindeki saat dilimlerine denk gelen 24 adet veriyi göstermektedir.
her günün 24 adet verisini yeni sayfada transpoze edilmesi ...örnek dosya 10 günlük veriyi içermektedir. 1 yıl gibi bir zaman zarfındaki verilerin değerlendirilmesi alınacağından (365 gün) bunun makro ve ya herhangi bir kısa yöntemini rica ediyorum sizden..
 

Ekli dosyalar

arkdaşlar belki de şu şekilde yapabilirm bu işlemi fakat bunun içinde makro yazmam gerekiyor sanırım..ornek.xls dosyamdaki 1.sayfada matris olarak yazılmasını istediğim veriler yani Io ları bir komut vasıtasıyla ya direk bu verilerin yanında ya da 2.sayfadaki bir boşluğa direk atama yöntemiyle belli bir sıraya göre sıralamasını yapabilcek bir makro
 
Merhaba,

Tablonuzu inceledim fakat ne yapılması gerektiğini anlayamadım. Tablo üzerinden sayfa adı hücre adı belirterek konuyu detaylı açıklarmısınız.

.
 
ilginiz için teşekkür ederim öncelikle.
dosya 10 günlük bir veriyi içeriyor içerisinde birden fazla değişken var ve asıl hesaplanması gereken değeri yani Io ı bulmamızı sağlıyor (güneş radyasyonu)..
En sağda bulunan Io verilerini yeni bir sayfada ve ya aynı sayfa içerisinde gerçekleştireceğimiz bir matris (solda günler sağda saatler olacak şekilde)içerisine yerleştirmemiz gerekiyor.
her bir gün için 24 saat ve her bir saate karşılık gelen Io değerleri mevcut
yapıcağımız matris (transpoze işlemi aslında) ilk 24 Io değerini(sütun) yeni sayfada ve ya boş bir yerde satır olarak dizecek yani 24 er şekilde dizilim yapacak ..her 24 değerden sonra diğer günün saatlik verisi karşımıza geleceğinden sınır 24 olacak
 

Ekli dosyalar

Son düzenleme:
Sayın kakastar,

Sizin anlatma biçiminiz, yanınızda bulunan birine el ile gösterek açıklama yapıyor gibi olyor.
Sağ-sol, o sayfa-bu sayfa türünde açıklamalar değilde, örneğin Sayfa1 de A2:A10 arası şu şarta göre Sayfa2 nin B2:B10 aralığına aktarılacak şekilde örnekler vererek açıklarsanız daha kolay anlaşılacaktır. Bu şekilde bir yere varmamız zor. En azında benim için öyle..

Keşke eklediğiniz dosyada bunları hücre adresleri vererek detaylı açıklasaydınız.

.
 
Sayın kakastar,

Sizin anlatma biçiminiz, yanınızda bulunan birine el ile gösterek açıklama yapıyor gibi olyor.
Sağ-sol, o sayfa-bu sayfa türünde açıklamalar değilde, örneğin Sayfa1 de A2:A10 arası şu şarta göre Sayfa2 nin B2:B10 aralığına aktarılacak şekilde örnekler vererek açıklarsanız daha kolay anlaşılacaktır. Bu şekilde bir yere varmamız zor. En azında benim için öyle..

Keşke eklediğiniz dosyada bunları hücre adresleri vererek detaylı açıklasaydınız.

.

haklısınız Ömer bey
bunun için son mesajıma yaptığım eklentide daha açıklayıcı şekilde anlatmaya çalıştım ne yapmak istenildiğini..
teşekkür ederim tekrardan..
 
Module kopyalayarak çalıştırınız.

Kod:
Sub Aktar()
 
Dim j As Integer, S1 As Worksheet, i As Long, sat As Long
 
Set S1 = Sheets("Sheet1")
 
Application.ScreenUpdating = False
Sheets("Sheet2").Select
 
For i = 3 To S1.Cells(Rows.Count, "N").End(xlUp).Row
    If S1.Cells(i, "N") > 0 Then
        For j = 2 To 25
            If S1.Cells(i, "F") = Cells(1, j) Then
                sat = Cells(Rows.Count, j).End(3).Row + 1
                Cells(sat, j) = S1.Cells(i, "N")
            End If
        Next j
    End If
Next i
 
Application.ScreenUpdating = True
 
End Sub
İstediğiniz bu mu?

.
 
çok teşekkür ederim Ömer bey.. örnek dosya içeriisnde tam istediğim sonucu vermiş yazdığınız kod. Umarım 365 günlük ana tablomda da aynı sonucu verir. :)
tekrar ellerinize sağlık..
 
Ömer bey merhabalar,
sizden bir ricada bulanacaktım..örnek dosyası için yazmış olduğunuz kodu malesef veri sayısı arttırdığım zaman ıygulamaya çalıştığımda sonuç alamıyorum..
yeni eklediğim dosyada 10 günlük olan veri 365 gün olarak düzenlenmiştir. Rica etsem bu uygulamayı tüm veriler için çalışabilir düzeye getirebilir misiniz?
şimdiden teşekkürederim
 

Ekli dosyalar

Merhaba,

Ben bir sorun göremedim. Olmayan bölümü daha detaylı açıklarmısınız..

.
 
Ömer bey ekteki dosyayı inceleyebilirseniz çok memnun olurum..
 

Ekli dosyalar

  • veri.xls
    veri.xls
    445.5 KB · Görüntüleme: 12
Olmasını istediğiniz sonuçların 3-4 tanesini diğer sayfada manuel yaparak konuyu açıklarmısınız.
 
Ömer bey merhabalar..
B sutununda yer alan değerleri 24 er şekilde transpoze yaparak aşağıya doğru sıralayacak bir algoritma benim aradığım ..
yine sitede yaptığım bir aramada bir örnek üzerinden kendi dosyama uyguladığımda aşağıdaki bir makro elde ettim..burada yazılan kod ile anlatılmak istenen tam olaran nedir bazı verileri transpoze etmiyor çnkü..değerlendirebilirseniz çok memnun olurum..teşekkür ederim yardımlarınız için

Sub sirala()
Application.ScreenUpdating = False
For a = 1 To [a8787].End(3).Row Step 24
Range("a" & a & ":a" & a + 23).Copy
Cells(c + 1, "b").PasteSpecial , Transpose:=True
c = c + 1
Next
Application.CutCopyMode = False
End Sub
 
Son düzenleme:
#12 numaralı mesajımı dikkate alarak yeni bir dosya eklermisiniz.
 
#12 numaralı mesajımı dikkate alarak yeni bir dosya eklermisiniz.

Buyrun Ömer bey..
kendimce halletim sorunu ama başka arkadaşlara faydalı olabilir diye sizinde düşüncenizi merak ediyorum..kolay gelsin
 

Ekli dosyalar

Son düzenleme:
Kodu aşağıdaki gibi değiştirirseniz daha doğru olacaktır. Açıklamalar yeşil ile belirtilmiştir.

Kod:
Sub Transpoze()
 
    Dim i As Long, sAt As Long, aTlama As [COLOR=black]Long[/COLOR][COLOR=green] 'değişkenlerin tanımı[/COLOR]
 
    Application.ScreenUpdating = False [COLOR=green]'ekran hareket görüntüsünü kapatır.[/COLOR]
 
    [COLOR=green]'/////// C1 ile son sütun ve son satıra kadar olan aralığı siler \\\\\[/COLOR]
    Range(Cells(1, 3), Cells(Rows.Count, Columns.Count)).ClearContents
   [COLOR=green]'-----------------------------------------------------------------------[/COLOR]
 
    aTlama = 24[COLOR=green] ' kaç satırda bir atlama yapılacağını belirleyen değişken[/COLOR]
    sAt = 1 [COLOR=green]' kopyalamanın başlayacağı satır değişkeni[/COLOR]
 
 [COLOR=green] '/// 1 den başlayıp 24 artarak son dolu satıra kadar döngü kurar \\\[/COLOR]
    For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row Step aTlama
 
   [COLOR=green]'//// Kopyala - Özel Yapıştır - İşemi Tersine Çevir Matığı ile çalışır \\\[/COLOR]
        Range("A" & i & ":A" & i + aTlama - 1).Copy
        Range("C" & sAt).PasteSpecial , Transpose:=True
        sAt = sAt + 1
   [COLOR=green]'-----------------------------------------------------------------------[/COLOR]
    Next i
   [COLOR=green]'------------------------- Döngü Bitimi --------------------------------[/COLOR]
 
    Range("A1").Select [COLOR=green]' işlem bitince A1 hücresi aktiv olur.[/COLOR]
    Application.CutCopyMode = True [COLOR=green]'ekran hareket görüntüsünü açar.[/COLOR]
 
End Sub

.
 
Geri
Üst