Rakam kombinasyonlarını eşleştirme

Katılım
12 Aralık 2015
Mesajlar
67
Excel Vers. ve Dili
Excel 2010 ingilizce
Merhaba Arkadaşlar,

Aşağıdaki gibi bir senaryo için nasıl bir excel formülü uygulayabiliriz.

Aşağıdaki örnekte TOPLAMI 20104,91 TL olan pos slipleri ve bankaya düşen tutarları görülüyor.
Hangi kombinasyonları bu rakamlara denk geldiğini
Bulmak gerekiyor.

POS slip tutarları
4500
4500
3900
2900
1900
1700
650
54,91

Toplam;
20104,91



Bankaya Aktarılan Günsonu Toplamları
9150
10954,91

Toplam;
20104,91



Özetle soru şöyle: buradaki örnekte 9150 TL banka tutarının karşılığında hangi pos slip kombinasyonları bulunabilir?

Bu örnekte 9150 TL karşılık gelen rakamlar 3900+2900+1700+650 (9150 yi verdiğimizde bu 4 rakamı bize işaretlemeli ya da göstermeli)

Kalanlar da zaten 10954,91 yapıyor.


Çözüm için nasıl bir kod uygun olur.

Özet:
Programa rakam kombinasyonu bulunacak toplam rakamı vereceğiz örn=9150
Program bu toplam rakamı karşılayan sayı kombinasyonlarını ayrı ayrı verebilecek(sayılar çok fazla olursa kombinasyon çeşitleri de artabilir. Bu durumda diğer farklı kombinasyonları da listelemeli)

Yardımlarınız için şimdiden teşekkür ederim.
 
Katılım
12 Aralık 2015
Mesajlar
67
Excel Vers. ve Dili
Excel 2010 ingilizce
Problemin çözümü için yabancı bazı sitelerde de çalışma yapmışlar. Ancak bulabildiklerim net ve anlaşılır değil.
Şu sitede(Stackoverflow) Tam istediğim soru soruluyor ancak cevabı istenilen çözüm değil, bir yaklaşım sunmuş.

http://stackoverflow.com/questions/28146726/is-there-an-excel-function-to-find-a-combination-of-numbers

Şuradaki kodlar da anlaşılır değil, formüllü çözümü ise nasıl kullanacağımı bilemedim.
http://dailydoseofexcel.com/archives/2005/10/27/which-numbers-sum-to-target/

formülü aşağıdaki gibi

Lori says:
February 18, 2009 at 12:32 am
The posted example can also be solved quickly without code…
In cell C1, ctrl+shift+enter:

=MIN(ABS(
INT(MOD(ROW(B:B)+2^16*{0,1,2,3},2^1)/2^0)*B3
+INT(MOD(ROW(B:B)+2^16*{0,1,2,3},2^2)/2^1)*B4
+INT(MOD(ROW(B:B)+2^16*{0,1,2,3},2^3)/2^2)*B5
+INT(MOD(ROW(B:B)+2^16*{0,1,2,3},2^4)/2^3)*B6
+INT(MOD(ROW(B:B)+2^16*{0,1,2,3},2^5)/2^4)*B7
+INT(MOD(ROW(B:B)+2^16*{0,1,2,3},2^6)/2^5)*B8
+INT(MOD(ROW(B:B)+2^16*{0,1,2,3},2^7)/2^6)*B9
+INT(MOD(ROW(B:B)+2^16*{0,1,2,3},2^8)/2^7)*B10
+INT(MOD(ROW(B:B)+2^16*{0,1,2,3},2^9)/2^8)*B11
+INT(MOD(ROW(B:B)+2^16*{0,1,2,3},2^10)/2^9)*B12
+INT(MOD(ROW(B:B)+2^16*{0,1,2,3},2^11)/2^10)*B13
+INT(MOD(ROW(B:B)+2^16*{0,1,2,3},2^12)/2^11)*B14
+INT(MOD(ROW(B:B)+2^16*{0,1,2,3},2^13)/2^12)*B15
+INT(MOD(ROW(B:B)+2^16*{0,1,2,3},2^14)/2^13)*B16
+INT(MOD(ROW(B:B)+2^16*{0,1,2,3},2^15)/2^14)*B17
+INT(MOD(ROW(B:B)+2^16*{0,1,2,3},2^16)/2^15)*B18
+INT(MOD(ROW(B:B)+2^16*{0,1,2,3},2^17)/2^16)*B19
+INT(MOD(ROW(B:B)+2^16*{0,1,2,3},2^18)/2^17)*B20
-B1)*100+(ROW(B:B)+2^16*{0,1,2,3})/10^6)

(or use row(b1:b262144) in xl2007). Now fill down from C3:

=INT(MOD(ROUND(10^6*MOD($C$1,1),0),2^A3)/2^A3*2)

For other solutions you can use SMALL(,k) in place of MIN().
Şu linkte ise uzunca bir fonksiyon kodu var. Yine nasıl test edilir anlaşılmıyor.
http://www.tushar-mehta.com/excel/templates/match_values/#VBA_multiple_combinations
 
Son düzenleme:
Katılım
12 Aralık 2015
Mesajlar
67
Excel Vers. ve Dili
Excel 2010 ingilizce
Şu sitedeki;

http://www.excelforum.com/l/357826-find-which-numbers-sum-up-to-given-total.html

Şu kod da umut vaadediyor sanki;
Ancak testimde çalışmadı, range nesnesine adresi yazdıktan sonra ilk hata olarak SS değişkeni için tip hatası veriyor.


Kod:
Sub add_perm()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim m As Integer
Dim n As Integer
Dim p As Integer
Dim NN As Integer
Dim SS As Integer

Range("destination").ClearContents
SS = Range("known_total")
NN = Range("numbers") - 1 '13-1

p = 1

For i = 0 To NN
For j = 0 To NN
For k = 0 To NN
For m = 0 To NN
For n = 0 To NN
If Not (i >= j Or i >= k Or i >= m Or i >= n Or _
j >= k Or j >= m Or j >= n Or k >= m Or _
k >= n Or m >= n) _
And (i + j + k + m + n) = SS Then
Range("destination").Cells(p, 1) = i & ", " _
& j & ", " & k & ", " & m & ", " & n
p = p + 1
End If
Next n
Next m
Next k
Next j
Next i
End Sub
 
Üst