Merhaba,
Hazırlamış olduğum Excel tablomda bir çok veri ve makrolar bulunmakta.
Aylık maliyet çalışmaları yapıyorum.
Yalnız yaptığım işlem sonucunda otomatik formül yinelemesi devrede iken yanlış sonuç ama hücreyi içeriğindeki formule manuel olarak enter yapıp hücreyi yinelediğimde doğru sonucu veriyor.
Aradaki bu farkın neden kaynaklandığını ben bulamadım. Yardımcı olmanızı bekliyorum.
Yazmış olduğum makro ve hücredeki formulü aşağıda bulabilirsiniz.
İhtiyaç Durumuna göre; Excel Dosyasını paylaşabilirim.
FORMUL :
EĞERHATA(AYLIK_COST($H18;$K18;$L18;$Z$2;'Çalışılmayan Günler'!$A$8:$A$118);"")
Makro :
Function AYLIK_COST(Cost As Double, start As Date, finish As Date, ay_yil As Date, tatil As Range)
'Application.Volatile
'AYLIK_COST
'sure
'start
'finish
'ay
Dim ay_basi As Date
Dim ay_sonu As Date
'Formula = ActiveCell.FormulaR1C1
ay_basi = ay_yil
ay_sonu = WorksheetFunction.EoMonth(ay_basi, 0)
tatil_ay = 0
tatil_tum = 0
tatil_ay_sonu = 0
tatil_ay_basi = 0
tatil_ay_bay = 0
tatil_tum_bay = 0
tatil_ay_sonu_bay = 0
tatil_ay_basi_bay = 0
cur_row = ActiveCell.Row
For Each cell In tatil
celo = CDate(cell)
If cell.Offset(0, 1).Text = "" And celo >= ay_basi And celo <= ay_sonu Then tatil_ay = tatil_ay + 1
If cell.Offset(0, 1).Text = "" And celo >= start And celo <= finish Then tatil_tum = tatil_tum + 1
If cell.Offset(0, 1).Text = "" And celo >= start And celo <= ay_sonu Then tatil_ay_sonu = tatil_ay_sonu + 1
If cell.Offset(0, 1).Text = "" And celo >= ay_basi And celo <= finish Then tatil_ay_basi = tatil_ay_basi + 1
If cell.Offset(0, 1).Text = "Bayram" And celo >= ay_basi And celo <= ay_sonu Then tatil_ay_bay = tatil_ay_bay + 1
If cell.Offset(0, 1).Text = "Bayram" And celo >= start And celo <= finish Then tatil_tum_bay = tatil_tum_bay + 1
If cell.Offset(0, 1).Text = "Bayram" And celo >= start And celo <= ay_sonu Then tatil_ay_sonu_bay = tatil_ay_sonu_bay + 1
If cell.Offset(0, 1).Text = "Bayram" And celo >= ay_basi And celo <= finish Then tatil_ay_basi_bay = tatil_ay_basi_bay + 1
Next
'cell.Offset(0, -1).Font.Bold = True And
If cells(ActiveCell.Row, 1).Font.Bold = False And start >= ay_basi And start <= ay_sonu Then gun = ay_sonu - start - tatil_ay_sonu - tatil_ay_sonu_bay + 1
If cells(ActiveCell.Row, 1).Font.Bold = False And finish >= ay_basi And finish <= ay_sonu Then gun = finish - ay_basi - tatil_ay_basi - tatil_ay_basi_bay + 1
If cells(ActiveCell.Row, 1).Font.Bold = False And (start >= ay_basi And start <= ay_sonu) And (finish >= ay_basi And finish <= ay_sonu) Then gun = finish - start - tatil_tum - tatil_tum_bay + 1
If cells(ActiveCell.Row, 1).Font.Bold = False And start < ay_basi And finish > ay_sonu Then gun = ay_sonu - ay_basi + 1 - tatil_ay - tatil_ay_bay
If cells(ActiveCell.Row, 1).Font.Bold = True And start >= ay_basi And start <= ay_sonu Then gun_bay = ay_sonu - start - tatil_ay_sonu_bay + 1
If cells(ActiveCell.Row, 1).Font.Bold = True And finish >= ay_basi And finish <= ay_sonu Then gun_bay = finish - ay_basi + 1 - tatil_ay_basi_bay
If cells(ActiveCell.Row, 1).Font.Bold = True And (start >= ay_basi And start <= ay_sonu) And (finish >= ay_basi And finish <= ay_sonu) Then gun_bay = finish - start + 1 - tatil_tum_bay
If cells(ActiveCell.Row, 1).Font.Bold = True And start < ay_basi And finish > ay_sonu Then gun_bay = ay_sonu - ay_basi + 1 - tatil_ay_bay
'If tatil_ay > gun Then tatil_ay = gun
If cells(ActiveCell.Row, 1).Font.Bold = False Then
AYLIK_COST = Round((gun / ((finish - start) + 1 - tatil_tum - tatil_tum_bay)) * Cost, 2)
End If
If cells(ActiveCell.Row, 1).Font.Bold = True Then
AYLIK_COST = Round((gun_bay / ((finish - start) + 1 - tatil_tum_bay)) * Cost, 2)
End If
'ActiveCell.FormulaR1C1 = Formula
'ActiveCell.Calculate
End Function