--------------------------------------------
Alttakiler değişkenler.
Dim son As Long, i As Long, k As Long, sonSatis As Long
Dim sp As Worksheet, spFiyat As Worksheet
Dim bul As Range
Dim kacinci As Long, say As Long
Dim Satisfiyat As Double, alisFiyat As Double, yuzde As Double
----------------------------------------
alttakiler sayfa adı atanması.Sayfa52 demek FİYATLANDIRMA demek.
Set spFiyat = ThisWorkbook.Worksheets("Fiyatlandirma") olarakta yazılabilirdi tam adı ile ama Tr karakterden dolayı hata verebilirdiye öyle yaptım siz değiştirebilirsiniz istersenizde.
Set sp = Sayfa2
Set spFiyat = Sayfa52
--------------------------------------------
alttakinde her yerde sayfa5 yazmamak için kısalttım.
Örnek .Cells(Rows.Count, "B").End(3).Offset(1).Row burda Syfa5.Cells(Rows.Count, "B").End(3).Offset(1).Row gibi aynısı.
With Sayfa5
------------------------------------------------------
alttakinde diziye aldım sanal excel SATIR ve sütun gibi düşünebilirsiniz.
13 sütun sayısı, rows.count ise toplam SATIR sayısı yani 1048576 oluyor.Normalde 10000 gibi yada son değişkenide yazılabilrdi ama bu dosyada böyle gerek duyuldu.
ReDim arr(1 To Rows.Count, 1 To 13)
-----------------------------------------
Alttakinde 3.sütundan 22.satıra kadar döngü kurdum ve 2 şer olarak atlıyor.Çünkü siparişler sayfasında C sütunundan başlıyor ve bir sonraki döngüde E den devam etmesi için ve G,i diye devam eder.
For i = 3 To 22 Step 2
-------------------------------
burdada siparişler sayfasında 3.satırdan son dolu satıra kadar döngü için.
For k = 3 To son
-----------------------------------------------------
burdada sayfa5 demek datış faturası olduğuna göre bu sayfanın B sütunun son dolu sütunun bir alt boş SATIR numarasını verir. Aslında o kısım fazladan yazılmış kod değişince unuttum sanırım silmeyi.
sonSatis = .Cells(Rows.Count, "B").End(3).Offset(1).Row
----------------------------------
burdada sipariş sayfasında kilo için yani D,F gibi sütunlar için.Yani o sütunlarda veri varsa demek.
If sp.Cells(k, i).Value <> "" Then
--------------------------------------
arr(say, 1) = sp.Range("B1").Value
arr(say, 2) = sp.Cells(1, i).Value
arr(say, 4) = sp.Range("A" & k).Value
arr(say, 5) = sp.Cells(k, i).Value
Bunlarda arr(say, 1) mesela dizinin ilk satırı ve ilk sütunu için say burda 1 olduğu için.Say arttıkça diziyede veriler artar.Diğerleride aynı mantık.
sp.Cells(k, i).Value burda i sütun k ise SATIR oluyor.
--------------------------------------------
Burdada bul diye değişken yapıldı ve Fiyatlandırma syfasının A sütununda arama yapılıyor.Arananda sipariş sayfasının mesela C1 ,le A3 verinin birleşmesinin sonucundaki değer aranıyor.
Varsa Fiyatlandırma sayfasının kaçıncı satırındaysa kacıncı değişkenine o SATIR no atanıyor.Alttakilerde belli zaten dikkatli bakarsanız.
Set bul = spFiyat.Range("A:A").Find(sp.Cells(1, i).Value & sp.Cells(k, 1).Value, , xlValues, 1)
If Not bul Is Nothing Then
kacinci = bul.Row
alisFiyat = spFiyat.Cells(kacinci, "G").Value
Satisfiyat = spFiyat.Cells(kacinci, "H").Value
yuzde = spFiyat.Cells(kacinci, "i").Value
End If
----------------------------------------------------------------
Mesela burdada say örnek 15 ise dizinin 15.satırına ve 12.cütununa ilgili değerler geliyor.
arr(say, 12) = alisFiyat * arr(say, 7) + ((alisFiyat * arr(say, 7)) * arr(say, 9))
---------------------------------------------------
Alttaki ise dizi içinde veri varsa Satış faturasına aktarma yapılıyor.
If say > 0 Then .Range("A" & .Cells(Rows.Count, "A").End(3).Offset(1).Row).Resize(say, UBound(arr, 2)).Value = arr