Bir hücredeki negatif değeri bularak pozitif değerden çıkarmak

ersanertugrul

Altın Üye
Katılım
13 Ocak 2021
Mesajlar
7
Excel Vers. ve Dili
2016 ve 2019 - ingilizce ve türkçe
Altın Üyelik Bitiş Tarihi
13-01-2031
Merhaba,

bir tabloda farklı sütun ve satırlara dağılmış veriler var. bu verilerden bir kısmı negatif. benim yapmak istediğim şey ise bir formül ile ilgili satırda negatif değeri bulmak ve ilk önce en sağdan başlayacak şekilde bulduğu pozitif değerden çıkarmak. satırın en sağında yani en son sütunda (örnek: F17hücresi) yer alan pozitif değerden çıkarıldıktan sonra eğer yine negatif kalan var ise ondan bir önceki hücreden (f16) çıkarılmalı ve pozitif değer olana kadar devam etmeli.

bu şekilde bir formül uygulanabilir mi? yardımcı olabilir misiniz?

teşekkür ederim.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,167
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Dosyada görmek istediğiniz sonuçları boş bir sütunda elle uygular mısınız?

Kafanızda ki kurguyu net olarak anlayalım..
 

ersanertugrul

Altın Üye
Katılım
13 Ocak 2021
Mesajlar
7
Excel Vers. ve Dili
2016 ve 2019 - ingilizce ve türkçe
Altın Üyelik Bitiş Tarihi
13-01-2031
Birkaç satıra açıklama yazdım. Umarım yeterli olur. Olmaz ise daha detaylı anlatmaya çalışırım.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,167
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu liste yukarıdan aşağıya doğru mu yoksa aşağıdan yukarıya doğru mu kontrol edilecek?

İlk mesajınızda F17 ve sonrasında F16 yazdığınız için bu soruyu sormak istedim?
 

ersanertugrul

Altın Üye
Katılım
13 Ocak 2021
Mesajlar
7
Excel Vers. ve Dili
2016 ve 2019 - ingilizce ve türkçe
Altın Üyelik Bitiş Tarihi
13-01-2031
merhaba, sizin sorunuz sayesinde ilk mesajımda yanlış ifade ettiğimi farkettim. Teşekkür ederim. ilk mesajdaki F16 aslında E17 olmalı.
 

ersanertugrul

Altın Üye
Katılım
13 Ocak 2021
Mesajlar
7
Excel Vers. ve Dili
2016 ve 2019 - ingilizce ve türkçe
Altın Üyelik Bitiş Tarihi
13-01-2031
merhaba, yardımcı olabilecek misiniz? Teşekkür ederim
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,167
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Örnek dosyanızda 22. satırda yazdığınız açıklamayı anlamadım?

Bir kod hazırladım. Notlarınıza göre düzenlemeye çalıştım. Deneyip sonucu bildirirsiniz.

C++:
Option Explicit

Sub Negatif_Degerleri_Sifirla()
    Dim X As Long, Son As Long, Veri As Variant, Y As Byte, Z As Integer, Zaman As Double
    Dim Toplam_Negatif As Double, Toplam_Pozitif As Double, Kalan As Double
    
    Zaman = Timer
    
    Son = Cells(Rows.Count, 1).End(3).Row
    If Son < 3 Then Son = 3
    
    Veri = Range("A2:F" & Son).Value
    
    For X = LBound(Veri, 1) To UBound(Veri, 1)
        Toplam_Negatif = 0
        Toplam_Pozitif = 0
        For Y = 1 To 6
            If Veri(X, Y) < 0 Then
                Toplam_Negatif = Toplam_Negatif + Veri(X, Y)
            Else
                Toplam_Pozitif = Toplam_Pozitif + Veri(X, Y)
            End If
        Next
        
        For Y = 1 To 6
            If Veri(X, Y) < 0 Then
                Kalan = Veri(X, Y)
                For Z = 6 To 1 Step -1
                    If Veri(X, Z) > 0 Then
                        If Veri(X, Z) >= Abs(Kalan) Then
                            Veri(X, Z) = Veri(X, Z) + Kalan
                            Veri(X, Y) = 0
                            Kalan = 0
                            GoTo 10
                        End If
                    End If
                Next
            End If
10      Next
    Next

    Range("H2").Resize(UBound(Veri, 1), UBound(Veri, 2)) = Veri

    MsgBox "İşleminiz tamamlanmıştır." & vbCr & vbCr & _
           "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub
 
Üst