Dzielenie liczby na składniki sumy [zamknięte]

0

Czy istnieje sposób, w jaki mogę podać liczbę, a program Excel obliczy składniki składające się na tę liczbę z ograniczonego podzbioru (bez przekraczania podanej liczby)

np. Podzbiór: (1,25, 2,5,, 5,10,20)

i biorąc pod uwagę liczbę (25), Excel napisałby 20 + 5 (lub 20,5)

17 -> 10 + 5 + 1,25 (najbliższa kombinacja, która nie przekracza 17)

35 -> 20 + 10 + 5 = 35

36 -> 20 + 10 + 5 = 35

37 -> 20 + 10 + 5 + 1,25 = 36,25

38 -> 20 + 10 + 5 + 2,5 = 37,5

39 -> 20 + 10 + 5 + 2,5 + 1,25 = 38,75

i tak dalej

Sarah22
źródło
Czy chcesz to zrobić za pomocą formuł komórkowych, VBA lub jednego z nich?
Robyn
1
@ Robin dobrze, jeśli można to zrobić za pomocą formuły komórkowej, z pewnością odpowie na pytanie i będzie bardzo imponujące
barlop
Prawdopodobnie wymagałoby to VBA, a na tej stronie nie lubią robić całych ćwiczeń dla ludzi. ponieważ jest to VBA, jest to raczej problem programistyczny, ale znowu strona siostry lub większego brata, stackoverflow, nie lubi robić ćwiczeń dla ludzi. Lepiej byłoby zapytać na innym forum, takim jak excelforum.com/excel-programming-vba-macros
barlop
Warto również zastanowić się, dlaczego zadajesz to pytanie. Skąd pochodzi pytanie. Jeśli próbujesz nauczyć się excela ... być może VBA, to przypuszczam, że może to wymagać pętli - iteracja .. A jeśli próbujesz nauczyć się tego robić, istnieją łatwiejsze sposoby ... więc bardziej progresywne ćwiczenie miałoby to sens. Jak makro VBA do wyświetlania liczb 1-5.
barlop
Istnieje wiele dwuznaczności. Czy czynniki mogą się powtarzać? Twój podzbiór to wszystkie czynniki. Istnieje wiele sposobów ich wykorzystania. Czy istnieje inna zasada, na przykład jak najmniej możliwych czynników? Jak należy wyrazić 60?
fixer1234

Odpowiedzi:

2

To była świetna zabawa!

Gdzieś w swoim skoroszycie (sugeruję inną kartę), utwórz tabelę składników, w tym zero : Tak po Tabela składników prostu zacznij od słowa „Składniki”, następnie dodaj swoje liczby poniżej, a następnie wybierz „Wstaw tabelę” ze wstążki. Pamiętaj, aby podać zero i zmienić nazwę tabeli zgodnie z podświetleniem. Ta tabela komponentów będzie musiała być w porządku rosnącym, ale jej utworzenie oznacza, że ​​dostaniesz ten przydatny mały przycisk sortowania / filtrowania. :-)

Następnie, gdzie indziej w swoim skoroszycie, utwórz główny stół. Tabela główna z kolumną z numerem wejściowym, 10 kolumnami składowymi i kolumną sumy składowej Dodaj tylko pierwszą kolumnę i wszystkie nagłówki kolumn, a następnie ponownie wybierz Wstaw tabelę. Zredagowałem format liczb w stylu Normalnym, aby General;General;wartości zerowe były wyświetlane tak, jakby były puste.

Kolumny:

Numer - twój numer

C1 - =VLOOKUP([@Number],Components,1)

C2 do C10 - =VLOOKUP([@Number]-SUM(OFFSET([@C1],0,0,1,COLUMN()-COLUMN([@C1]))),Components,1)

CSum - =SUM([@[C1]:[C10]])

W tabeli [@ColumnName]odnosi się do komórki „ColumnName” w bieżącym wierszu. Dlatego w mojej wersji formuła COLUMN([@C1])ocenia na 3, ponieważ znajduje się w kolumnie C.

Tak więc, dla podświetlonej komórki na powyższym obrazie, formuła

=VLOOKUP([@Number]-SUM(OFFSET([@C1],0,0,1,COLUMN()-COLUMN([@C1]))),Components,1)

rozwiązuje do

=VLOOKUP(**35**-SUM(OFFSET(C4,0,0,1,**6** - **3**)),Components,1)

rozwiązuje do

=VLOOKUP(35-SUM(**C4:E4**),Components,1)

rozwiązuje do

=VLOOKUP(35-**35**,Components,1)

I tak funkcja WYSZUKAJ.PIONOWO szuka największej liczby w komponentach, która jest równa pierwszemu argumentowi (0), i zwraca wynik 0. Jest on wyświetlany zgodnie z niestandardowym formatowaniem, Custom;Custom;tak aby zero było puste.

(Cóż, pieprzyć. „**” oczywiście nie jest dosłownie częścią tego, co rozwiązuje formuła, ale jest to moja nieudana próba pogrubienia zmienionych części. Jeśli ktoś wie, jak uzyskać efekt, strzelałem bo proszę to naprawić.)

JSmart523
źródło