dengeceteris
Altın Üye
- Katılım
- 21 Aralık 2019
- Mesajlar
- 204
- Excel Vers. ve Dili
- Office 2016
- Altın Üyelik Bitiş Tarihi
- 15-06-2025
Sevgili forum üyesi ve uzmanı herkese günaydın.. Aşağıda bir vba problemim var yardımcı olacak arkadaşlar olursa şimdiden teşekkür ederim.
Ben bu kod ile MİZAN sayfamda bulunan verileri etopla aracılığıyla KARZARAR sayfasına çekiyorum. Problemsiz çalışan bir kod. Ancak bir ekleme yapmak istiyorum. Bu şekilde çalışan veri çeken başka sayfalarımda olduğu için bunu bütün bir dosyada aktif olacak bir kod mu yoksa aşağıdaki kodun içine entegre edilebilecek bir şey mi olur bilmiyorum. Yapmak istediğim ise virgülden sonraki kısımların en yakın tam sayıya yuvarlanması. (Ss.Range("AC3:AD" & Rows.Count).NumberFormat = "#,##0;(#,##0)") En altta yazdığım bu kısım diyelim ki hücredeki sayı 123.562,23 ise bunu 123.562 olarak gösteriyor. Ama ben tamamen bu sayının en yakın tam sayıya yuvarlasın istiyorum.
Sub KAR_ZARAR()
Dim i As Long, sons As Long, sond As Long, z As Date
Dim Sd As Worksheet, Ss As Worksheet, Wf As WorksheetFunction
Dim a1 As String, a2 As String, a3 As String, a4 As String, a5 As String, b1 As String
z = Timer
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
Set Sd = Sheets("MİZAN")
Set Ss = Sheets("KARZARAR")
Set Wf = WorksheetFunction
Ss.Select
sons = Ss.Cells(Rows.Count, 1).End(xlUp).Row
sond = Sd.Cells(Rows.Count, 1).End(xlUp).Row
Ss.Range("AC3:AD" & Rows.Count).ClearContents
a1 = Sd.Range("A3:A" & sond).Address(external:=True)
a2 = Sd.Range("M3:M" & sond).Address(external:=True)
a3 = Sd.Range("N3:N" & sond).Address(external:=True)
a4 = Sd.Range("O3:O" & sond).Address(external:=True)
For i = 3 To sons
If Wf.CountA(Ss.Cells(i, "A").Resize(1, 25)) > 0 Then
b1 = Ss.Cells(i, "A").Resize(1, 25).Address
Ss.Cells(i, 29) = -Evaluate("=SUM(SUMIF(" & a1 & "," & b1 & "," & a4 & "))")
Ss.Cells(i, 30) = -Evaluate("=SUM(SUMIF(" & a1 & "," & b1 & "," & a3 & "))")
End If
Next
Ss.Range("AC3:AD" & Rows.Count).NumberFormat = "#,##0;(#,##0)"
With Application
.ScreenUpdating = True
.Calculation = xlAutomatic
.EnableEvents = True
End With
' MsgBox "Süre: " & Format(Timer - z, "0.00"), vbInformation
End Sub
Ben bu kod ile MİZAN sayfamda bulunan verileri etopla aracılığıyla KARZARAR sayfasına çekiyorum. Problemsiz çalışan bir kod. Ancak bir ekleme yapmak istiyorum. Bu şekilde çalışan veri çeken başka sayfalarımda olduğu için bunu bütün bir dosyada aktif olacak bir kod mu yoksa aşağıdaki kodun içine entegre edilebilecek bir şey mi olur bilmiyorum. Yapmak istediğim ise virgülden sonraki kısımların en yakın tam sayıya yuvarlanması. (Ss.Range("AC3:AD" & Rows.Count).NumberFormat = "#,##0;(#,##0)") En altta yazdığım bu kısım diyelim ki hücredeki sayı 123.562,23 ise bunu 123.562 olarak gösteriyor. Ama ben tamamen bu sayının en yakın tam sayıya yuvarlasın istiyorum.
Sub KAR_ZARAR()
Dim i As Long, sons As Long, sond As Long, z As Date
Dim Sd As Worksheet, Ss As Worksheet, Wf As WorksheetFunction
Dim a1 As String, a2 As String, a3 As String, a4 As String, a5 As String, b1 As String
z = Timer
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
Set Sd = Sheets("MİZAN")
Set Ss = Sheets("KARZARAR")
Set Wf = WorksheetFunction
Ss.Select
sons = Ss.Cells(Rows.Count, 1).End(xlUp).Row
sond = Sd.Cells(Rows.Count, 1).End(xlUp).Row
Ss.Range("AC3:AD" & Rows.Count).ClearContents
a1 = Sd.Range("A3:A" & sond).Address(external:=True)
a2 = Sd.Range("M3:M" & sond).Address(external:=True)
a3 = Sd.Range("N3:N" & sond).Address(external:=True)
a4 = Sd.Range("O3:O" & sond).Address(external:=True)
For i = 3 To sons
If Wf.CountA(Ss.Cells(i, "A").Resize(1, 25)) > 0 Then
b1 = Ss.Cells(i, "A").Resize(1, 25).Address
Ss.Cells(i, 29) = -Evaluate("=SUM(SUMIF(" & a1 & "," & b1 & "," & a4 & "))")
Ss.Cells(i, 30) = -Evaluate("=SUM(SUMIF(" & a1 & "," & b1 & "," & a3 & "))")
End If
Next
Ss.Range("AC3:AD" & Rows.Count).NumberFormat = "#,##0;(#,##0)"
With Application
.ScreenUpdating = True
.Calculation = xlAutomatic
.EnableEvents = True
End With
' MsgBox "Süre: " & Format(Timer - z, "0.00"), vbInformation
End Sub