Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Sub OSK() 'Êîëîíè 3, 5, 7, 9, 11, 13, 15, 17, 19, 21
- Dim wsf As Object 'Ïðîâåðÿâàìå ñìåòêèòå íà ðåä 10 îò "OSK" äàëè ãè èìà â "podrOV" (col 1) -> Ako Ìàñèâà å ïðàçåí Çàáèâà.
- Set wsf = Application.WorksheetFunction 'Àêî ãè èìà -> ïðîâåðÿâàìå äàëè èìà äåáèòåí (col 5) èëè êðåäèòåí îáîðîò (col 6). -> Ako Ìàñèâà å ïðàçåí Çàáèâà.
- Dim ws As Object 'Àêî èìà ÄÎ -> çàïèñâàìå íÿêúäå ñ-êàòà è ÄÎ
- Set ws = Worksheets 'Àêî èìà ÊÎ -> çàïèñâàìå íÿêúäå ñ-êàòà è ÊÎ
- Dim c As Variant
- Dim colArr As Variant 'Àêî íÿìà òàêàâà ñìåòêà èëè èìà ñìåòêà, íî íÿìà íèòî ÄÎ, íèòî ÊÎ, òîãàâà:
- colArr = Array(3, 5, 7, 9, 11, 13, 15, 17, 19, 21) '1. ïîñëåäíèÿ ðåä 30 íà òàáë. â "OSK" ïî êîëîíè å ðàâåí íà ñóìàòà íà ðåä 13.
- Dim d, k As Byte '2. ñóìèòå, êîèòî ñå ïðåíàñÿò íà ðåä 30 â "OSK" ñå ïðåíàñÿò óìíîæåíè ïî 1000 è â "Balance", col 6 îò ðåä 15 äî ðåä 29
- Dim r, lastRtargetSheet As Long 'òîâà ñà ðåäîâå: 15, 16, 17, 19, 20, 21, 22, 25, 26, 28, 29
- lastRtargetSheet = findLastRow("podrOV")
- Dim activeAccDO(), activeAccKO() As Variant
- Dim acc1, accFlag1 As Variant
- Dim colCopyInitAmountToFinal As Boolean
- Dim accCopyInitAmountToFinal As Boolean
- Dim accRow As Long
- Dim hasKredit, hasDebit As Boolean
- Dim balanceRow As Long
- Dim copyInitAmountToFinal As Boolean
- 'dict prrwryshta kolonite na OSK w redowe na Balance
- Dim dict As Object
- Set dict = CreateObject("Scripting.Dictionary")
- Dim keys As Variant, vals As Variant
- Dim i As Long
- Dim debitFinalSaldo As Double
- Dim kreditFinalSaldo As Double
- Dim hasDebitOborot As Boolean
- Dim hasKreditOborot As Boolean
- keys = Array(3, 5, 7, 9, 11, 13, 15, 17, 19, 21)
- vals = Array(15, 16, 17, 19, 20, 21, 22, 25, 26, 28)
- For i = LBound(keys) To UBound(keys)
- dict.Add keys(i), vals(i)
- Next i
- ' 1. DENY VISUALIZATION & ALERTS
- Application.ScreenUpdating = False
- Application.DisplayAlerts = False
- With ws("OSK")
- d = 1: k = 1
- ' accFlag1 = Split(.Cells(10, 3).Value, ",")
- ' For Each acc1 In accFlag1
- For Each c In colArr 'Array(3, 5, 7, 9, 11, 13, 15, 17, 19, 21)
- copyInitAmountToFinal = False
- If .Cells(10, c) = "" Then
- 'W OSK nqma smetki za tazi kolona, mozhem da prenesem
- colCopyInitAmountToFinal = True
- Else
- colCopyInitAmountToFinal = True
- 'Smetki ima, razbiwame gi
- accFlag1 = Split(.Cells(10, c).Value, ",")
- debitFinalSaldo = 0
- kreditFinalSaldo = 0
- For Each acc1 In accFlag1
- For r = 2 To lastRtargetSheet
- accRow = FindRowWithText(1, acc1, "podrOV") ' Tyrsim smetkata w sheet podrOV kolona A
- If accRow = 0 Then
- ' Smetkata ne syshteswtywa w Balance
- ' Ne piapme colCopyInitAmountToFinal
- ' Ako e true, shte si ostane true
- ' Ako e false, shte si ostane false
- Else
- hasDebitOborot = True
- If IsNumeric(ws("podrOV").Cells(5, accRow).Value) And Val(ws("podrOV").Cells(5, accRow).Value) = 0 Then hasDebitOborot = False
- hasKreditOborot = True
- If IsNumeric(ws("podrOV").Cells(6, accRow).Value) And Val(ws("podrOV").Cells(6, accRow).Value) = 0 Then hasKreditOborot = False
- If hasDebitOborot Or hasKreditOborot Then
- 'Dori samo 1 ot smetkite za kolonata da ima debit, znachi ne mozhem prosto da prenesem
- colCopyInitAmountToFinal = False
- ' Ako debit
- ' * Ako w kol 7 (debitno krajno saldo) ima > 0, umnozhamwae po -1 i go trupame w debitFinalSaldo
- If IsNumeric(ws("podrOV").Cells(7, accRow).Value) And Val(ws("podrOV").Cells(7, accRow).Value) > 0 Then
- debitFinalSaldo = debitFinalSaldo - Val(ws("podrOV").Cells(7, accRow).Value)
- End If
- ' Ako w kol 8 (kreditno krajno saldo) ima > 0, go trupame w kreditFinalSaldo
- If IsNumeric(ws("podrOV").Cells(8, accRow).Value) And Val(ws("podrOV").Cells(8, accRow).Value) > 0 Then
- kreditFinalSaldo = kreditFinalSaldo + Val(ws("podrOV").Cells(8, accRow).Value)
- End If
- Else
- ' Smetkata syshetswuwa w Balance, no nqma nito debitni, nito kreditni salda
- ' Ne piapme colCopyInitAmountToFinal
- ' Ako e true, shte si ostane true
- ' Ako e false, shte si ostane false
- End If
- ' If IsNumber(ws("podrOV").Cells(5, accRow).Value) And Val(ws("podrOV").Cells(5, accRow).Value) > 0 Then
- ' ReDim Preserve activeAccDO(d) 'Ñëàãàìå ñìåòêèòå, â ÷èéòî Äåáèòíè îáîðîòè èìà äâèæåíèå ïðåç ãîäèíàòà
- ' activeAccDO(d) = .Cells(10, c).Value
- ' d = d + 1
- ' End If
- ' If IsNumber(ws("podrOV").Cells(6, r).Value) And Val(ws("podrOV").Cells(6, r).Value) > 0 Then
- ' ReDim Preserve activeAccKO(k) 'Ñëàãàìå ñìåòêèòå, â ÷èéòî Êðåäèòíè îáîðîòè èìà äâèæåíèå ïðåç ãîäèíàòà
- ' activeAccKO(k) = .Cells(10, c).Value
- ' k = k + 1
- ' End If
- End If 'Array (3, 5, 7, 9, 11, 13, 15, 17, 19, 21) -> red 30
- Next r 'Balance(15, 16, 17, 19, 20, 21, 22, 25, 26, 28) -> kolona 6
- Next acc1
- ' Zapazwame natrupanite krajni salda w sheet Balance
- balanceRow = dict(c)
- ws("Balance").Cells(balanceRow, 6) = debitFinalSaldo + kreditFinalSaldo
- End If
- If colCopyInitAmountToFinal Then
- 'W kolonata nqma niakwi krediti/debiti i mozgem da prenesem nachalnata suma w krajnata
- ' .Cells(30, c).Value = .Cells(13, c).Value
- balanceRow = dict(c)
- ws("Balance").Cells(balanceRow, 6) = wsf.Round(.Cells(30, c).Value * 1000, 0)
- End If 'Tyrsim èìåòî íà ñìåòêàòà â êîëîíà 1 îò ãîðå íà äîëó
- 'Ïðàâèì íîâî òúðñåíå ñ íà÷àëåí ðåä íà ïúðâîòî íàìåðåíî êàòî ñìåòêà - îò ãîðå íàäîëó òúðñèì "Îáùî" !
- Next c
- ' Dim divd As Double
- ' divd = InterimDivident(lastRtargetSheet)
- ' .Cells(29, 6).Value = divd
- End With
Advertisement
Add Comment
Please, Sign In to add comment