Aynı excel dosyası içerisinden veri getirme

Katılım
19 Eylül 2023
Mesajlar
17
Excel Vers. ve Dili
Microsoft Office LTSC Professional Plus 2021 bit
Altın Üyelik Bitiş Tarihi
19-09-2024
Değerli Excel Üstadları Merhaba;

Basit bir şekilde exceldeki sayfadan veri almak istiyorum fakat bir türlü sonuca varamadım, bu nedenle yardımınıza ihtiyacım var.

Data sekmesinde bir tablom var. Buradaki bilgileri Veri sekmesinde oluşturduğum tabloya formülle çekmek istiyorum. Veri sekmesinde örnek olarak bilgileri manuel yazdığım bir tablo var. Hemen yanındaki tabloya formül ile işlem yapmak istiyorum.

Veri sekmesindeki Formül tablom için;

247433


Öncelikli olarak Data sekmesinde Kalite 1 olan birimin Hacim ve M miktarını almak istiyorum
Daha sonra aynı şekilde kalite 2 olan ürünün aynı bilgilerini çekmek istiyorum. Arada boş satırlarda var.
 

Ekli dosyalar

Katılım
5 Nisan 2008
Mesajlar
352
Excel Vers. ve Dili
Microsoft Office Standard 2010 TR
32 Bit
Altın Üyelik Bitiş Tarihi
31-01-2024
Bu işlemi düşey ara ile çok rahat yapabilirsiniz. Ancak Veri (Data dosyanızı biraz düzenlemeniz gerekiyor ) Neyi nere göre getirilecek net değil.
 
Katılım
19 Eylül 2023
Mesajlar
17
Excel Vers. ve Dili
Microsoft Office LTSC Professional Plus 2021 bit
Altın Üyelik Bitiş Tarihi
19-09-2024
Bu işlemi düşey ara ile çok rahat yapabilirsiniz. Ancak Veri (Data dosyanızı biraz düzenlemeniz gerekiyor ) Neyi nere göre getirilecek net değil.
Evet tablo biraz karmaşık fakat ana dosyayı bozamıyorum veya değiştiremiyorum. Çünkü değiştirdiğim zaman asıl dosyada çok fazla makro ve formül baştan yapılması gerek.

Önce kalite satırında kalite 1 yazanı dikkate alacağız. Daha sonra Kalite 1 e ait olan Hacim ve M değerlerini almam gerekiyor.
Sonra kalite 2 için aynı işlem vs
Kısaca bu şekidle
 
Katılım
19 Eylül 2023
Mesajlar
17
Excel Vers. ve Dili
Microsoft Office LTSC Professional Plus 2021 bit
Altın Üyelik Bitiş Tarihi
19-09-2024
Konu günceldir. Yardım rica ederim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Makroyla çözüm daha uygun görünüyor..

C++:
Option Explicit

Sub Aktar()
    Dim S1 As Worksheet, S2 As Worksheet
    Dim X As Integer, Y As Long
    Dim Last_Row As Long, No As Long
    
    Set S1 = Sheets("Data")
    Set S2 = Sheets("Veri")
    
    Last_Row = 20
    
    ReDim Liste(1 To Last_Row * 5, 1 To 4)
    
    For Y = 2 To S1.Cells(3, S1.Columns.Count).End(1).Column
        For X = 4 To Last_Row
            If S1.Cells(X, Y).Value <> "" Then
                No = No + 1
                Liste(No, 1) = S1.Cells(2, 9).Value
                Liste(No, 2) = S1.Cells(X, 1).Value
                Liste(No, 3) = S1.Cells(2, Y).Value
                Liste(No, 4) = S1.Cells(X, Y).Value
            End If
        Next
    Next
    
    S2.Range("G2").Resize(No, 4) = Liste
    
    Set S1 = Nothing
    Set S2 = Nothing
    
    MsgBox "Aktarım işlemi tamamlanmıştır.", vbInformation
End Sub
 
Katılım
19 Eylül 2023
Mesajlar
17
Excel Vers. ve Dili
Microsoft Office LTSC Professional Plus 2021 bit
Altın Üyelik Bitiş Tarihi
19-09-2024
Makroyla çözüm daha uygun görünüyor..

C++:
Option Explicit

Sub Aktar()
    Dim S1 As Worksheet, S2 As Worksheet
    Dim X As Integer, Y As Long
    Dim Last_Row As Long, No As Long
  
    Set S1 = Sheets("Data")
    Set S2 = Sheets("Veri")
  
    Last_Row = 20
  
    ReDim Liste(1 To Last_Row * 5, 1 To 4)
  
    For Y = 2 To S1.Cells(3, S1.Columns.Count).End(1).Column
        For X = 4 To Last_Row
            If S1.Cells(X, Y).Value <> "" Then
                No = No + 1
                Liste(No, 1) = S1.Cells(2, 9).Value
                Liste(No, 2) = S1.Cells(X, 1).Value
                Liste(No, 3) = S1.Cells(2, Y).Value
                Liste(No, 4) = S1.Cells(X, Y).Value
            End If
        Next
    Next
  
    S2.Range("G2").Resize(No, 4) = Liste
  
    Set S1 = Nothing
    Set S2 = Nothing
  
    MsgBox "Aktarım işlemi tamamlanmıştır.", vbInformation
End Sub
Sorunsuz çalışmaktadır teşekkür ediyorum.
Sadece bir kısım eksik kaldı
Örneğin bu kırmızı ile işaretlediğim hücreler boş, buralara veri geldiğinde de otomatik diğer tarafa geçmesi için koda nasıl bir ekleme yapmam lazım.
Yani B2 ve F2 sütunları arasında her zaman dolu hücreleri algılamasını istiyorum.

247440
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Makroyu yeniden çalıştırırsanız listeniz güncellenecektir.
 
Katılım
19 Eylül 2023
Mesajlar
17
Excel Vers. ve Dili
Microsoft Office LTSC Professional Plus 2021 bit
Altın Üyelik Bitiş Tarihi
19-09-2024
Makroyla çözüm daha uygun görünüyor..

C++:
Option Explicit

Sub Aktar()
    Dim S1 As Worksheet, S2 As Worksheet
    Dim X As Integer, Y As Long
    Dim Last_Row As Long, No As Long
   
    Set S1 = Sheets("Data")
    Set S2 = Sheets("Veri")
   
    Last_Row = 20
   
    ReDim Liste(1 To Last_Row * 5, 1 To 4)
   
    For Y = 2 To S1.Cells(3, S1.Columns.Count).End(1).Column
        For X = 4 To Last_Row
            If S1.Cells(X, Y).Value <> "" Then
                No = No + 1
                Liste(No, 1) = S1.Cells(2, 9).Value
                Liste(No, 2) = S1.Cells(X, 1).Value
                Liste(No, 3) = S1.Cells(2, Y).Value
                Liste(No, 4) = S1.Cells(X, Y).Value
            End If
        Next
    Next
   
    S2.Range("G2").Resize(No, 4) = Liste
   
    Set S1 = Nothing
    Set S2 = Nothing
   
    MsgBox "Aktarım işlemi tamamlanmıştır.", vbInformation
End Sub
247446

buranın konumu I10 olarak değiştirmek istiyorum. Kod içerisinde hangi alanda değişiklik yapmam gerekiyor.
Teşekkürler
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Liste(No, 1) = S1.Cells(2, 9).Value

2 değerini 10 yaparak deneyiniz.
 
Üst