canburak
Altın Üye
- Katılım
- 30 Kasım 2011
- Mesajlar
- 205
- Excel Vers. ve Dili
- Ofis 2016 Tr 64 Bit , Turkce
- Altın Üyelik Bitiş Tarihi
- 12-09-2025
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
=EĞER(YADA(B4="kapali";ETOPLA($B$4:$B$19;"kapali";$D$4:$D$19)+ETOPLA($B$3:B4;"<>kapali";$D$3:D4)<$E$1);D4;EĞER(ETOPLA($B$3:B3;"<>kapali";$E$3:E3)+ETOPLA($B$4:$B$19;"kapali";$D$4:$D$19)<$E$1;$E$1-ETOPLA($B$4:$B$19;"kapali";$D$4:$D$19)-ETOPLA($B$3:B3;"<>kapali";$D$3:D3);""))
Ustat elina saglik bunu makroda yapa bilirmiyiz acaba ?Merhaba.
Formül ile çözüm isterseniz aşağıdaki formül sonuç verir.
Formül kısaltılabilir sanırım ama önemli olan sonuç almak derseniz, şimdilik aşağıdaki formülü kullanabilirsiniz.
Formülü E4 hücresine uygulayın ve aşağı doğru kopyalayın.
.Kod:=[COLOR="red"]EĞER[/COLOR](B4="kapali";D4;[COLOR="red"]EĞER[/COLOR]([COLOR="red"]ETOPLA[/COLOR]($B$4:$B$19;"kapali";$D$4:$D$19)+[COLOR="red"]ETOPLA[/COLOR]($B$3:B4;"<>kapali";$D$3:D4)<$E$1;D4;[COLOR="red"]EĞER[/COLOR]([COLOR="red"]ETOPLA[/COLOR]($B$3:B3;"<>kapali";$E$3:E3)+[COLOR="red"]ETOPLA[/COLOR]($B$4:$B$19;"kapali";$D$4:$D$19)<$E$1;$E$1-[COLOR="red"]ETOPLA[/COLOR]($B$4:$B$19;"kapali";$D$4:$D$19)-[COLOR="Red"]ETOPLA[/COLOR]($B$3:B3;"<>kapali";$D$3:D3);"")))
Sub CANBURAK()
son = Cells(Rows.Count, "A").End(3).Row: hedef = [E1]
If Cells(Rows.Count, "E").End(3).Row > 4 Then Range("E4:E" & son).ClearContents
ktop = WorksheetFunction.SumIf(Range("B4:B" & son), "kapali", Range("D4:D" & son))
For sat = 4 To son
dtop = WorksheetFunction.SumIf(Range("B3:B" & sat), "<>kapali", Range("D3:D" & sat))
etop = WorksheetFunction.SumIf(Range("B3:B" & sat - 1), "<>kapali", Range("E3:E" & sat - 1))
If Cells(sat, "B") = "kapali" Or ktop + dtop < hedef Then
Cells(sat, "E") = Cells(sat, "D")
ElseIf ktop + etop < hedef Then
Cells(sat, "E") = hedef - ktop - etop
End If
Next
MsgBox "İşlem tamamlandı.", vbInformation, "..::.. Ömer BARAN ..::.."
End Sub
Sagol ustat leine emegine saglik cok guzel olmus Allah razi olsun HepinizdenTekrar merhaba.
Önceki cevabımdaki gereksiz bir EĞER işlevini kaldırarak formülü biraz kısalttım.
(sayfayı yenileyerek önceki cevabımı kontrol ediniz)
Makro çözümü ise aşağıda.
Kod:[B][COLOR="Blue"]Sub CANBURAK()[/COLOR][/B] [B]son[/B] = Cells(Rows.Count, "A").End(3).Row: [B][COLOR="Red"]hedef[/COLOR][/B] = [E1] If Cells(Rows.Count, "E").End(3).Row > 4 Then Range("E4:E" & [B]son[/B]).ClearContents [B]ktop[/B] = WorksheetFunction.SumIf(Range("B4:B" & [B]son[/B]), "kapali", Range("D4:D" & [B]son[/B])) For sat = 4 To [B]son[/B] [B][COLOR="DarkOrange"]dtop[/COLOR][/B] = WorksheetFunction.SumIf(Range("B3:B" & sat), "<>kapali", Range("D3:D" & sat)) [B][COLOR="SeaGreen"]etop[/COLOR][/B] = WorksheetFunction.SumIf(Range("B3:B" & sat - 1), "<>kapali", Range("E3:E" & sat - 1)) If Cells(sat, "B") = "kapali" Or [B]ktop[/B] + [B][COLOR="DarkOrange"]dtop[/COLOR][/B] < [B][COLOR="Red"]hedef[/COLOR][/B] Then Cells(sat, "E") = Cells(sat, "D") ElseIf [B]ktop[/B] + [B][COLOR="SeaGreen"]etop[/COLOR][/B] < [B][COLOR="Red"]hedef[/COLOR][/B] Then Cells(sat, "E") = [B][COLOR="Red"]hedef[/COLOR][/B] - [B]ktop[/B] - [B][COLOR="SeaGreen"]etop[/COLOR][/B] End If Next MsgBox "İşlem tamamlandı.", vbInformation, "..::.. Ömer BARAN ..::.." [B][COLOR="blue"]End Sub[/COLOR][/B]
Tekrar Merhaba Hocam bu insallah iyisinizdir, onceden ayarladiginiz bu usteki makroyu sadece kapali olanlara nasil uyarlaya biliriz , Dagitimi sadece kapali ise dagitmasi lazim bos yada baska bir sey yaziyorsa onlara birsey dagitmayacakTekrar merhaba.
Önceki cevabımdaki gereksiz bir EĞER işlevini kaldırarak formülü biraz kısalttım.
(sayfayı yenileyerek önceki cevabımı kontrol ediniz)
Makro çözümü ise aşağıda.
Kod:Sub CANBURAK() son = Cells(Rows.Count, "A").End(3).Row: hedef = [E1] If Cells(Rows.Count, "E").End(3).Row > 4 Then Range("E4:E" & son).ClearContents ktop = WorksheetFunction.SumIf(Range("B4:B" & son), "kapali", Range("D4:D" & son)) For sat = 4 To son dtop = WorksheetFunction.SumIf(Range("B3:B" & sat), "<>kapali", Range("D3:D" & sat)) etop = WorksheetFunction.SumIf(Range("B3:B" & sat - 1), "<>kapali", Range("E3:E" & sat - 1)) If Cells(sat, "B") = "kapali" Or ktop + dtop < hedef Then Cells(sat, "E") = Cells(sat, "D") ElseIf ktop + etop < hedef Then Cells(sat, "E") = hedef - ktop - etop End If Next MsgBox "İşlem tamamlandı.", vbInformation, "..::.. Ömer BARAN ..::.." End Sub
Tekrar Merhaba Hocam bu insallah iyisinizdir, onceden ayarladiginiz bu usteki makroyu sadece kapali olanlara nasil uyarlaya biliriz , Dagitimi sadece kapali ise dagitmasi lazim bos yada baska bir sey yaziyorsa onlara birsey dagitmayacak
Simdiden cok tesekkurler yardimlariniz icin.
Sub CANBURAK()
son = Cells(Rows.Count, "A").End(3).Row: hedef = [E1]
If Cells(Rows.Count, "E").End(3).Row > 4 Then Range("E4:E" & son).ClearContents
For sat = 4 To son
If Cells(sat, "B") = "kapali" Then
If hedef >= Cells(sat, "D") Then
Cells(sat, "E") = Cells(sat, "D")
hedef = hedef - Cells(sat, "E")
Else
Cells(sat, "E") = hedef
Exit For
End If
End If
Next
MsgBox "İşlem tamamlandı.", vbInformation, "..::.. Ömer BARAN ..::.."
End Sub
Sub CANBURAK()
son = Cells(Rows.Count, "A").End(3).Row: hedef = [E1]
If Cells(Rows.Count, "E").End(3).Row > 4 Then Range("E4:E" & son).ClearContents
ktop = WorksheetFunction.SumIf(Range("B4:B" & son), "kapali", Range("D4:D" & son))
If hedef > ktop Then
MsgBox "hedef hucre, kapali yazan hucreler den fazla.", vbInformation, "..::.. Ömer BARAN ..::.."
Exit Sub
End If
For sat = 4 To son
If Cells(sat, "B") = "kapali" Then
If hedef >= Cells(sat, "D") Then
Cells(sat, "E") = Cells(sat, "D")
hedef = hedef - Cells(sat, "E")
Else
Cells(sat, "E") = hedef
Exit For
End If
End If
Next
MsgBox "İşlem tamamlandı.", vbInformation, "..::.. Ömer BARAN ..::.."
End Sub