Toplama ve karşılaştırma sorunu

Katılım
20 Temmuz 2009
Mesajlar
183
Excel Vers. ve Dili
office 2016
Arkadaşlar belirli bir rakama karşılık gelen sayının üst satırlardakilere eşit olması için hangi satırlar toplanmalı ve hangi sütüna denk gelmeli. Bunu anlatmak çok güc bunedenle ekte örnek verdim. sadece ? işaretli alana formül yazılacak. Çok muhtemel indis, topla, düşeyara ve satır formülü ben çözemedim. yardımcı olurmusunuz lütfen.

Siteye dosya ekleme ücretli olmuş. Bundan dolayı link verdim. Lütfen yardım edermisiniz.

http://www.dosya.tc/server22/GognKv/yard_m_1_.xls.html
 
Katılım
28 Ekim 2007
Mesajlar
217
Excel Vers. ve Dili
2003-2013
hangi sayıyı hangi sayıyla karşılaştıracak yada hangi hücrede olduğunu tespit mi edecek.

adım adım

yazarsanız sevinirim. anlamak maksadıyla
 
Katılım
20 Temmuz 2009
Mesajlar
183
Excel Vers. ve Dili
office 2016
Sırasıyla anlatmaya çalışayım (sadece d sütünundan yola çıkalım)

d14= -26'dır. Bu şu demek oluyor. D2:d9 arası 26 kişi düşmeliyim. Lakin azaltmaya d9 dan yani en alt satırdan başlamam gerekiyor. Haliyle; 26 ya ulaşmak için

d9+d8+d7+d6 yeterli oluyor.
(5 + 8 + 6) + 15
19 + 7 (d6=15 olduğundan bize 26 ya ulaşmak için 7 i gerekli)

bu kapsamda d6 da 8 kalmış oluyor.
Bu durumda 26 rakamına a6'nın karşısında ulaştık. Yani 4 yılda. Fakat. D6 da 8 kaldığından tam 4 yıl olmuyor. 8 d6 daki rakamın (15 in) %53 ü demek. Bu durumda benim ulaşmaya çalıştığım rakam 4,53 yıl oluyor.

D15 e bir formül yazmalıyımki sonuç 4,53 olsun....

Yardımınız için şimdiden teşekkür ederim. Iyi akşamlar.
 
Katılım
28 Ekim 2007
Mesajlar
217
Excel Vers. ve Dili
2003-2013
Sırasıyla anlatmaya çalışayım (sadece d sütünundan yola çıkalım)

d14= -26'dır. Bu şu demek oluyor. D2:d9 arası 26 kişi düşmeliyim. Lakin azaltmaya d9 dan yani en alt satırdan başlamam gerekiyor. Haliyle; 26 ya ulaşmak için

d9+d8+d7+d6 yeterli oluyor.
(5 + 8 + 6) + 15
19 + 7 (d6=15 olduğundan bize 26 ya ulaşmak için 7 i gerekli)

bu kapsamda d6 da 8 kalmış oluyor.
Bu durumda 26 rakamına a6'nın karşısında ulaştık. Yani 4 yılda. Fakat. D6 da 8 kaldığından tam 4 yıl olmuyor. 8 d6 daki rakamın (15 in) %53 ü demek. Bu durumda benim ulaşmaya çalıştığım rakam 4,53 yıl oluyor.

D15 e bir formül yazmalıyımki sonuç 4,53 olsun....

Yardımınız için şimdiden teşekkür ederim. Iyi akşamlar.

devamlı son üç satırlar mı kontrol edilecek

yoksa

çıkan sonuç rakamına göre hücreler tek tek toplanıp. sonuç rakamına ulaşılacak
 
Katılım
20 Temmuz 2009
Mesajlar
183
Excel Vers. ve Dili
office 2016
devamlı son üç satırlar mı kontrol edilecek

yoksa

çıkan sonuç rakamına göre hücreler tek tek toplanıp. Sonuç rakamına ulaşılacak

hayır devamlı son üç satır değil, d14 de bulunan rakama ulaşmak adına d2:d9 arasında toplama yapılacak. Verdiğim örnekte 26 ya ulaşmak için onlar toplandı.

Haliyle d14 deki rakam kaç ise ona ulaşana dek toplanacak.
Teşekkür ederim.
 
Katılım
28 Ekim 2007
Mesajlar
217
Excel Vers. ve Dili
2003-2013
Bir soru daha olacak

toplamalara aşağıdan yukarıya doğrumu gidilecek

tablo bu kadar mı daha uzuyor mu
 
Son düzenleme:

systran

Destek Ekibi
Destek Ekibi
Katılım
15 Aralık 2007
Mesajlar
1,573
Excel Vers. ve Dili
2007 [TR], 2013 [TR]
-Toplam için kullanılacak sayıları B2 den itibaren alt alta yaz. Buraya ekleme/çıkarma yaparsan CMD butona tekrar basman gerek.
-A2 ye Bulunmasını istediğin değeri yaz.
-Command Butona bas, bulundu değerini kontrol et. Eğer bulundu sonucu Doğru ise adres bilgisi ve hangi sayıların kullanıldığı altındaki hücrelerde yazar.
-A2 yi her değiştridiğinde CMD düğmesine bas.

NOT: B2 ye girilen sayılara göre SONUÇ KESİNLİKLE BULUNACAK diye birşey yok. çünkü girilen sayılar, istediğimiz toplamı vermeyebilir. SAKIN sadece toplamasın, çıkarıp çarpıp bölsün falan deme :D yapılan işlem SADECE TOPLAMA içindir.
"... hücreler tek tek toplanıp ..."

örneği inceler misin?
https://drive.google.com/folderview?id=0By_vlGkmFxCCUlRwTmlQb1FweUU&usp=sharing
 
Son düzenleme:
Katılım
20 Temmuz 2009
Mesajlar
183
Excel Vers. ve Dili
office 2016
ilgileneceğim

kod yazılması gerekiyor anladığım kadarıyla

en kısa zamanda inşallah halledeceğim
kod yazmadan formül ile yaparsanız mutlu olurum. makro bilmediğimden dolayı müdehale edemiyorum. bu beni cok zorlar. ilginiz için teşekkür ederim.
 
Katılım
20 Temmuz 2009
Mesajlar
183
Excel Vers. ve Dili
office 2016
-Toplam için kullanılacak sayıları B2 den itibaren alt alta yaz. Buraya ekleme/çıkarma yaparsan CMD butona tekrar basman gerek.
-A2 ye Bulunmasını istediğin değeri yaz.
-Command Butona bas, bulundu değerini kontrol et. Eğer bulundu sonucu Doğru ise adres bilgisi ve hangi sayıların kullanıldığı altındaki hücrelerde yazar.
-A2 yi her değiştridiğinde CMD düğmesine bas.

NOT: B2 ye girilen sayılara göre SONUÇ KESİNLİKLE BULUNACAK diye birşey yok. çünkü girilen sayılar, istediğimiz toplamı vermeyebilir. SAKIN sadece toplamasın, çıkarıp çarpıp bölsün falan deme :D yapılan işlem SADECE TOPLAMA içindir.
"... hücreler tek tek toplanıp ..."

örneği inceler misin?
https://drive.google.com/folderview?id=0By_vlGkmFxCCUlRwTmlQb1FweUU&usp=sharing
hocam çok teşekkür ederim. Lakin ben bu bilgileri iş yerimde bulunan bilgisayara taşımam gerekli. iş yerim ise güvenlik gereği hd olmayan, usb, cd takılamayan bir bilgisayarlarla donatılmış durumda. bu kapsamda makro bilmediğimden işimi görmeyecektir. bunu formül ile yapma şansımız varmıdır. yardımınız için simdiden teşekkür ederim.
 

systran

Destek Ekibi
Destek Ekibi
Katılım
15 Aralık 2007
Mesajlar
1,573
Excel Vers. ve Dili
2007 [TR], 2013 [TR]
Söylediğiniz güvenlik engeline takılmazsınız. bunu Formüllerle yapan olursada AYAKTA ALKIŞLARIM :D
Adım adım Yapacaklarınız. (Sayfa1 i kullanın)
-A ve B sütunundaki yazıları gir.
-A4 içinde =EĞERSAY(C2:C1000;A2)=1 formülü var
-Command Buton Ekle (ben active X denetimi olanı kullandım) ve içine aşağıdaki kodları yapıştır.

BU KADAR :)




Kod:
Private Sub CommandButton1_Click()
If tablo_hazir Then MsgBox "Tablo Hazırlanmış!": Exit Sub
tablo_hazir = True
Application.ScreenUpdating = False
Sayfa1.Range("C1:CC1000").ClearContents
Dim sonsatir As Long
sonsatir = Sayfa1.Range("B65536").End(3).Row
Dim tekrar As Long
tekrar = 2 ^ (sonsatir - 1)
MsgBox tekrar & " kombinasyon"


For j = 0 To sonsatir - 1
  Sayfa1.Cells(1, j + 4).Value = Sayfa1.Range("B" & sonsatir - j + 1).Value
Next j

dondur = tekrar \ 2

For j = 1 To sonsatir - 1
    For i = 0 To tekrar - 1
       'Sayfa1.Cells(i, j + 4).Value = (((j - 1) \ dondur)) Mod 2
       tmp = (i \ dondur) Mod 2
       Sayfa1.Cells(i + 2, j + 4).Value = tmp
    Next i
    dondur = dondur \ 2
    
Next j

'Adres
Sayfa1.Range("A6").Value = ""

'Kullanılan Sayılar
Sayfa1.Range("A8").Value = ""
'MsgBox Asc("E")
'E Kodu = 69

For j = 1 To tekrar
  Sayfa1.Cells(j + 1, 4).Value = j
  formül = "SumProduct(--(E1:" & Chr(69 + sonsatir - 1) & "1),--(E" & j + 1 & ":" & Chr(69 + sonsatir - 1) & j + 1 & "))"
  Sayfa1.Cells(j + 1, 3).Value = Application.Evaluate(formül)
  If Sayfa1.Range("A2").Value = Sayfa1.Cells(j + 1, 3).Value Then
    Sayfa1.Range("A6").Value = Replace(Sayfa1.Cells(j + 1, 3).Address, "$", "")
    tmp_str = ""
    For i = 1 To sonsatir - 1
    
        'Kullanılan Sayıları Listele
        If Sayfa1.Range(Sayfa1.Cells(j + 1, 4 + i).Address).Value = 1 Then
            'Sayfa1.Range(Sayfa1.Cells(j + 1, 4 + i).Address).Select
            tmp_str = tmp_str & Sayfa1.Range(Sayfa1.Cells(1, 4 + i).Address).Value & " ,"
        End If
    Next i
    Sayfa1.Range("A8").Value = Left(tmp_str, Len(tmp_str) - 1)
  End If
Next j

Sayfa1.Range("C2:C" & tekrar + 1).Select

With Sayfa1.Range("C2:C100" & tekrar + 1)
.FormatConditions.Delete
.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:=Sayfa1.Range("A2").Value
Selection.FormatConditions(1).Interior.ColorIndex = 6
End With
 
Son düzenleme:
Katılım
20 Temmuz 2009
Mesajlar
183
Excel Vers. ve Dili
office 2016
Söylediğiniz güvenlik engeline takılmazsınız. bunu Formüllerle yapan olursada AYAKTA ALKIŞLARIM :D
Adım adım Yapacaklarınız. (Sayfa1 i kullanın)
-A ve B sütunundaki yazıları gir.
-A4 içinde =EĞERSAY(C2:C1000;A2)=1 formülü var
-Command Buton Ekle (ben active X denetimi olanı kullandım) ve içine aşağıdaki kodları yapıştır.

BU KADAR :)




Kod:
Private Sub CommandButton1_Click()
If tablo_hazir Then MsgBox "Tablo Hazırlanmış!": Exit Sub
tablo_hazir = True
Application.ScreenUpdating = False
Sayfa1.Range("C1:CC1000").ClearContents
Dim sonsatir As Long
sonsatir = Sayfa1.Range("B65536").End(3).Row
Dim tekrar As Long
tekrar = 2 ^ (sonsatir - 1)
MsgBox tekrar & " kombinasyon"


For j = 0 To sonsatir - 1
  Sayfa1.Cells(1, j + 4).Value = Sayfa1.Range("B" & sonsatir - j + 1).Value
Next j

dondur = tekrar \ 2

For j = 1 To sonsatir - 1
    For i = 0 To tekrar - 1
       'Sayfa1.Cells(i, j + 4).Value = (((j - 1) \ dondur)) Mod 2
       tmp = (i \ dondur) Mod 2
       Sayfa1.Cells(i + 2, j + 4).Value = tmp
    Next i
    dondur = dondur \ 2
    
Next j

'Adres
Sayfa1.Range("A6").Value = ""

'Kullanılan Sayılar
Sayfa1.Range("A8").Value = ""
'MsgBox Asc("E")
'E Kodu = 69

For j = 1 To tekrar
  Sayfa1.Cells(j + 1, 4).Value = j
  formül = "SumProduct(--(E1:" & Chr(69 + sonsatir - 1) & "1),--(E" & j + 1 & ":" & Chr(69 + sonsatir - 1) & j + 1 & "))"
  Sayfa1.Cells(j + 1, 3).Value = Application.Evaluate(formül)
  If Sayfa1.Range("A2").Value = Sayfa1.Cells(j + 1, 3).Value Then
    Sayfa1.Range("A6").Value = Replace(Sayfa1.Cells(j + 1, 3).Address, "$", "")
    tmp_str = ""
    For i = 1 To sonsatir - 1
    
        'Kullanılan Sayıları Listele
        If Sayfa1.Range(Sayfa1.Cells(j + 1, 4 + i).Address).Value = 1 Then
            'Sayfa1.Range(Sayfa1.Cells(j + 1, 4 + i).Address).Select
            tmp_str = tmp_str & Sayfa1.Range(Sayfa1.Cells(1, 4 + i).Address).Value & " ,"
        End If
    Next i
    Sayfa1.Range("A8").Value = Left(tmp_str, Len(tmp_str) - 1)
  End If
Next j

Sayfa1.Range("C2:C" & tekrar + 1).Select

With Sayfa1.Range("C2:C100" & tekrar + 1)
.FormatConditions.Delete
.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:=Sayfa1.Range("A2").Value
Selection.FormatConditions(1).Interior.ColorIndex = 6
End With

cok teşekkür ederim. elinize sağlık.
 
Katılım
28 Ekim 2007
Mesajlar
217
Excel Vers. ve Dili
2003-2013


Kod:
Function cengizank(aranacak As Double, sutun As Double, baslasatir As Double, hangisatir As Double) As Double

Dim basla, basla1, i As Integer
Dim veri, veri1, veri2, sutun1, veriara, hesap, dusenhesap, sonhesap As Double


basla = baslasatir
basla1 = 0
bitis = 2
veri = Abs(aranacak)
veri1 = 0
veri2 = 0
sutun1 = sutun
hesap = 0
dusenhesap = 0
sonhesap = 0
i = 0



For i = 0 To baslasatir

  
    veri2 = Cells(basla - i, sutun1).Value
    veri1 = veri1 + veri2
    
    If veri1 = aranacak Then
    cengizank = Cells((basla - i) - 1, hangisatir).Value

    Exit For
    End If
    
    
    If veri1 > veri Then
    hesap = veri2 - veri
    dusenhesap = veri1 - veri2
    sonhesap = veri - dusenhesap
    sonhesap = Cells(basla - i, sutun1).Value - sonhesap
    sonhesap = sonhesap / Cells(basla - i, sutun1).Value * 100
    sonhesap = Cells(basla - i, hangisatir).Value & "," & sonhesap
    cengizank = sonhesap / 100
    
    Exit For
    End If
    
     
Next
End Function
yukarıdaki kodları modül olarak ekle
ekleme için
Alt+F11 tuşuna bas

VB kod penceresi gelecek

Insert Menüsünde ---> Modül Seçeneğine Tıkla

ve yukarıdaki kodları yapıştır

eğer ms office 2007 üstü versiyon kullanıyor isen

Farklı kaydet penceresinden

kayıt türü seçeneğinden makro içerebilen seçeneğini seç ve dosyayı farklı kaydet


kod olarak yazdığım formül çalışıyor resimdeki gibi kullan
 
Son düzenleme:
Katılım
20 Temmuz 2009
Mesajlar
183
Excel Vers. ve Dili
office 2016


Kod:
Function cengizank(aranacak As Double, sutun As Double, baslasatir As Double, hangisatir As Double) As Double

Dim basla, basla1, i As Integer
Dim veri, veri1, veri2, sutun1, veriara, hesap, dusenhesap, sonhesap As Double


basla = baslasatir
basla1 = 0
bitis = 2
veri = Abs(aranacak)
veri1 = 0
veri2 = 0
sutun1 = sutun
hesap = 0
dusenhesap = 0
sonhesap = 0
i = 0



For i = 0 To baslasatir

  
    veri2 = Cells(basla - i, sutun1).Value
    veri1 = veri1 + veri2
    
    If veri1 = aranacak Then
    cengizank = Cells((basla - i) - 1, hangisatir).Value

    Exit For
    End If
    
    
    If veri1 > veri Then
    hesap = veri2 - veri
    dusenhesap = veri1 - veri2
    sonhesap = veri - dusenhesap
    sonhesap = Cells(basla - i, sutun1).Value - sonhesap
    sonhesap = sonhesap / Cells(basla - i, sutun1).Value * 100
    sonhesap = Cells(basla - i, hangisatir).Value & "," & sonhesap
    cengizank = sonhesap / 100
    
    Exit For
    End If
    
     
Next
End Function
yukarıdaki kodları modül olarak ekle
ekleme için
Alt+F11 tuşuna bas

VB kod penceresi gelecek

Insert Menüsünde ---> Modül Seçeneğine Tıkla

ve yukarıdaki kodları yapıştır

eğer ms office 2007 üstü versiyon kullanıyor isen

Farklı kaydet penceresinden

kayıt türü seçeneğinden makro içerebilen seçeneğini seç ve dosyayı farklı kaydet


kod olarak yazdığım formül çalışıyor resimdeki gibi kullan
çok teşekkür ederim. vallahi sizin gibi başarılı insanlar yüzünden kendimi formüllerle amele hissetmeye başladım. acil bir excel kitabı alıp makro nedirden başlamalı diyorum :)
 
Katılım
28 Ekim 2007
Mesajlar
217
Excel Vers. ve Dili
2003-2013
çok teşekkür ederim. vallahi sizin gibi başarılı insanlar yüzünden kendimi formüllerle amele hissetmeye başladım. acil bir excel kitabı alıp makro nedirden başlamalı diyorum :)

Her işin acemiliği vardır.

Dua etmen yeterli.

takıldığın yer olursa sorabilirsin
 
Katılım
22 Ocak 2014
Mesajlar
2
Excel Vers. ve Dili
excel 2007
Cengiz Bey Merhaba;

günlerdir çözüm aradığım bir sorunum var. çözüme en yakın buradaki açıklamalarınızı buldum. buradaki çözümden çok daha basit olacak sanırım sizin için :)
resim dosyasında hazırladığınız makroyu incelediğimde bir sütundaki sayıların bir kaçını toplayarak belli bir sayıya ulaştığnızı ve adres kısmında hangi sayıların toplamını aldığını gösterebildiğinizi görüyorum. benim aradığım çözüm sadece bu kadar. şöyle ki;
gelen listede 100 satır kadar sayı var. sayılar aynı da olabiliyor farklıda.
1
2
3
4
5
6
7
gibi. ve ayrıca bana bu listede 2 tane 6 toplamı var deniyor. (1+5 ve 4+2). her sayı bir defa kullanılıyor. benim aradığım ilk çalışmada listeden 1 ve 5 i gösterecek bunlar 6 ediyor diyecek. ben listeden 1 ve 5 i sildiğimde tekrar arama yaptığımda bu sefer 4+2 yi verecek. bu kontroller sonucu tamam toplam adetleri doğru diyeceğim. bu listede manuel yapmak kolay ancak elimdeki liste 300 satır ve sayılar küsüratlı olabiliyor. bulmamı istedikleri toplamlar ise 10 tane 322,45 toplamı ya da 30 tane 652,87 gibi zor sayılar. yardımcı olursanız dileyin benden ne dilerseniz.
en içten saygılarımla.
gibi. benden
 
Üst