DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Sub Fire_Hesapla()
Dim PlakaGenislik As Double
Dim PlakaYukseklik As Double
Dim ParcaGenislik As Double
Dim ParcaYukseklik As Double
Dim Kerf As Double
Dim GerekliParca As Long
Dim Satir1 As Long, Sutun1 As Long, Satir2 As Long, Sutun2 As Long
Dim ParcaAdet1 As Long, ParcaAdet2 As Long, EnIyiParcaAdet As Long
Dim PlakaAlan As Double, ParcaAlan As Double
Dim KullanilanAlan As Double, FireAlan As Double, FireYuzde As Double
Dim PlakaSayisi As Long, ToplamFireAlan As Double, ToplamFireYuzde As Double
' Hücrelerden verileri al
With ThisWorkbook.Sheets("Hesaplama")
PlakaGenislik = .Range("A2").Value
PlakaYukseklik = .Range("B2").Value
ParcaGenislik = .Range("C2").Value
ParcaYukseklik = .Range("D2").Value
Kerf = .Range("E2").Value
GerekliParca = .Range("F2").Value
End With
' Plaka ve parça alanı
PlakaAlan = PlakaGenislik * PlakaYukseklik
ParcaAlan = ParcaGenislik * ParcaYukseklik
' Yerleşim 1 (orijinal yön)
Satir1 = Int((PlakaGenislik + Kerf) / (ParcaGenislik + Kerf))
Sutun1 = Int((PlakaYukseklik + Kerf) / (ParcaYukseklik + Kerf))
ParcaAdet1 = Satir1 * Sutun1
' Yerleşim 2 (90° döndürülmüş)
Satir2 = Int((PlakaGenislik + Kerf) / (ParcaYukseklik + Kerf))
Sutun2 = Int((PlakaYukseklik + Kerf) / (ParcaGenislik + Kerf))
ParcaAdet2 = Satir2 * Sutun2
' En iyi yerleşim
EnIyiParcaAdet = WorksheetFunction.Max(ParcaAdet1, ParcaAdet2)
' Hesaplamalar
KullanilanAlan = ParcaAlan * EnIyiParcaAdet
FireAlan = PlakaAlan - KullanilanAlan
FireYuzde = FireAlan / PlakaAlan
' Gerekli plaka sayısı
PlakaSayisi = WorksheetFunction.Ceiling(GerekliParca / EnIyiParcaAdet, 1)
' Toplam fire hesapları
ToplamFireAlan = PlakaSayisi * PlakaAlan - GerekliParca * ParcaAlan
ToplamFireYuzde = ToplamFireAlan / (PlakaSayisi * PlakaAlan)
' Sonuçları yazdır
With ThisWorkbook.Sheets("Hesaplama")
.Range("G2").Value = PlakaAlan
.Range("H2").Value = ParcaAlan
.Range("I2").Value = EnIyiParcaAdet
.Range("J2").Value = KullanilanAlan
.Range("K2").Value = FireAlan
.Range("L2").Value = FireYuzde
.Range("M2").Value = PlakaSayisi
.Range("N2").Value = ToplamFireAlan
.Range("O2").Value = ToplamFireYuzde
End With
MsgBox "Fire hesaplaması tamamlandı!" & vbCrLf & _
"Plaka başına parça: " & EnIyiParcaAdet & vbCrLf & _
"Fire oranı: " & Format(FireYuzde, "0.00%") & vbCrLf & _
"Toplam plaka sayısı: " & PlakaSayisi & vbCrLf & _
"Toplam fire oranı: " & Format(ToplamFireYuzde, "0.00%"), vbInformation, "Fire Hesaplama"
End Sub