Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
784to788
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
784to788
784to788
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zahlen kombinieren?

Zahlen kombinieren?
30.07.2006 16:31:37
Gerhard
Hallo Forum,
aus solch einer Zahlenreihe
1
2
4
8
16
32
64
128
256
512
1024
kann man ja jede beliebige Zahl bis 2047 darstellen(Wie heißen solche Zahlen eigentlich?)
Nun ist es von Hand sehr mühsam, die passenden Zahlen für z.B. 1777 zu finden.
Hier wären es
1
16
32
64
128
512
1024
Nun meine Frage, kann man das in Excel automatieren? Wie könnte eine Formellösung aussehen oder geht das nur mit Makro?
Grüße Gerhard

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahlen kombinieren?
30.07.2006 16:57:07
Uwe
Hallo, Gerdard,
eine soche Zahlenreihe heißt Potenzreihe und wird gebildet durch die Formel y = 2x-1 für x =1 bis 11.
Die Summe aller Reihenglieder 1 bis 11 ergibt 2047.
Eine beliebige Ganzzahl G zwischen 1 und 2047 wird nun in diese Komponenten dadurch zerlegt, dass man im ersten Schritt die Zahl durch die Komponete K(11) = 1024 teilt.
Das ganzahlige Ergebnis E(11) ist 0 oder 1 und stellt somit da, ob diese Komponente K in der Zahl enthalten ist oder nicht.
Für den nächten Schritt wird der Wert W(10) = G - E(11)*K(11), der verbleibende Rest, der durch die bisher untersuchten Komponenten nicht abgedeckt ist.
Dieses W(10) wird durch die nächstkleinere Komponente K(10) = 512 geteilt.
Erneut wird die Prüfung und Ermittling des Rests wie zuvor für E(11) beschrieben, durchgeführt, bis E(1) ermittelt.
Das kann man nun in eine Prozedur packen oder aber auch aus Zellenformeln basteln.
 
 ABCDE
111777111
22 01 
34 01 
48 01 
516 11716
632 14932
764 111364
8128 1241128
9256 0241 
10512 1753512
111024 117771024
12    1777
Formeln der Tabelle
A1 : =POTENZ(2;ZEILE()-1)
C1 : =GANZZAHL(D1/A1)
D1 : =D2-A2*C2
E1 : =WENN(C1>0;A1;"")
A2 : =POTENZ(2;ZEILE()-1)
C2 : =GANZZAHL(D2/A2)
D2 : =D3-A3*C3
E2 : =WENN(C2>0;A2;"")
A3 : =POTENZ(2;ZEILE()-1)
C3 : =GANZZAHL(D3/A3)
D3 : =D4-A4*C4
E3 : =WENN(C3>0;A3;"")
A4 : =POTENZ(2;ZEILE()-1)
C4 : =GANZZAHL(D4/A4)
D4 : =D5-A5*C5
E4 : =WENN(C4>0;A4;"")
A5 : =POTENZ(2;ZEILE()-1)
C5 : =GANZZAHL(D5/A5)
D5 : =D6-A6*C6
E5 : =WENN(C5>0;A5;"")
A6 : =POTENZ(2;ZEILE()-1)
C6 : =GANZZAHL(D6/A6)
D6 : =D7-A7*C7
E6 : =WENN(C6>0;A6;"")
A7 : =POTENZ(2;ZEILE()-1)
C7 : =GANZZAHL(D7/A7)
D7 : =D8-A8*C8
E7 : =WENN(C7>0;A7;"")
A8 : =POTENZ(2;ZEILE()-1)
C8 : =GANZZAHL(D8/A8)
D8 : =D9-A9*C9
E8 : =WENN(C8>0;A8;"")
A9 : =POTENZ(2;ZEILE()-1)
C9 : =GANZZAHL(D9/A9)
D9 : =D10-A10*C10
E9 : =WENN(C9>0;A9;"")
A10 : =POTENZ(2;ZEILE()-1)
C10 : =GANZZAHL(D10/A10)
D10 : =D11-A11*C11
E10 : =WENN(C10>0;A10;"")
A11 : =POTENZ(2;ZEILE()-1)
C11 : =GANZZAHL(D11/A11)
D11 : =B1
E11 : =WENN(C11>0;A11;"")
E12 : =SUMME(E1:E11)
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Gruß,
Uwe
)Zzweiten, im indem man Zahl bis hin zu
Anzeige
AW: Zahlen kombinieren?
30.07.2006 17:08:49
Gerhard
Hallo Uwe,
danke für die ausführliche Erklärung, die sogar ich verstanden habe.
Nur mal aus Neugier, hast du auch eine Lösung mit Makro?
Grüße Gerhard
AW: Zahlen kombinieren - Zahlsysteme
30.07.2006 18:19:48
Erich
Hallo Gerhard,
schau dir das mal an:
https://www.herber.de/bbs/user/35459.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Zahlen kombinieren - Zahlsysteme
30.07.2006 18:30:43
Gerhard
Hallo Erich,
danke, sieht interessant aus, leider verstehe ich da nur Bahnhof.
Ich dachte eher daran, in ein Zelle eine Zielzahl einzugeben und auf Knopfdruck die entsprechen Einzelzahlen zu bekommen(in Zellen).
Grüße Gerhard
Anzeige
AW: Zahlen kombinieren - Zahlsysteme
30.07.2006 19:40:15
Erich
Hallo Gerhard,
wenn du eine der beiden grün unterlegten Zellen, bekommst du daneben die Zahlenreihe:
https://www.herber.de/bbs/user/35463.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Zahlen kombinieren?
30.07.2006 20:06:15
Uwe
Hallo, Gerhard,
eigentlich sollten die Ablaufbeschreibung des Rechengangs ausreichen für eine Basic-Programmerstellung.
Als Funktion z.B. wäre die folgende Umsetzung möglich, wobei eine Wertebereich für die Eingabezahl von 0 bis 231-1 abgedeckt wird:
Function SummenGliederPotenz(ByVal rng As Range) As String Dim Bit As Integer, maxExp As Long Dim maxZ As Long, Zahl As Long, pwert As Long, rest as long Dim i As Long, strChain As String 'Übernehme Zelleninhalt als Long-Variable) Zahl = CLng(rng) maxZ = 1 maxExp = 0 'nur zur Verdeutlichung, da maxExp bei jedem Neueintritt ' in die Funktion eh gleich null ist ' Ermitlung der maximalen Potenz in der übergebenen Zahl While maxZ <= Zahl And maxExp < 31 maxZ = 2 ^ (maxExp) maxExp = maxExp + 1 Wend 'Ermittlung des maximalen Potenzwertes pwert zur Basis 2 mit maxExp pwert = 2 ^ maxExp - 1 If Zahl > pwert Then ' Übergabezahl ist größer als darstellbare positive Longzahl ' wird allerdings auch durch maxExp <= 31 begrenzt MsgBox ("Zahlenwert " & Zahl & " > " & pwert) Exit Function End If rest = Zahl pwert = pwert / 2 strChain = "" For i = maxExp To 1 Step -1 Bit = Int(rest / pwert) rest = rest - Bit * pwert If Bit > 0 Then If Len(strChain) = 0 Then strChain = pwert Else strChain = strChain & " + " & pwert End If End If pwert = pwert / 2 Next i ' Message-Box-Zeile ggf. mit Kommentarzeichen ausschalten MsgBox ("Ergebnis für die " & Zahl & " =" & Chr(10) & Chr(13) & strChain) SummenGliederPotenz = " SumGP2 = " & strChain End Function
 
 AB
12147483647 SumGP2 = 1073741824 + 536870912 + 268435456 + 134217728 + 67108864 + 33554432 + 16777216 + 8388608 + 4194304 + 2097152 + 1048576 + 524288 + 262144 + 131072 + 65536 + 32768 + 16384 + 8192 + 4096 + 2048 + 1024 + 512 + 256 + 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1
2945674140 SumGP2 = 536870912 + 268435456 + 134217728 + 4194304 + 1048576 + 524288 + 262144 + 65536 + 32768 + 16384 + 4096 + 1024 + 512 + 256 + 128 + 16 + 8 + 4
31777 SumGP2 = 1024 + 512 + 128 + 64 + 32 + 16 + 1
Formeln der Tabelle
A1 : =POTENZ(2;31)-1
B1 : =SummenGliederPotenz(A1)
A2 : =GANZZAHL(ZUFALLSZAHL()*POTENZ(2;31))-1
B2 : =SummenGliederPotenz(A2)
B3 : =SummenGliederPotenz(A3)
 

Das Ganze ist also die Ermittlung des Bitmusters einer Zahl
(

1|.............|
2|6|3|1|.......| Potenzwert der Bitposition = 2Bitposition
8|4|2|6|8|4|2|1|
-+-+-+-+-+-+-+-+
7|6|5|4|3|2|1|0| Bitposition
-+-+-+-+-+-+-+-+
0|0|1|0|0|1|1|0| Binärzahl 0010 0110
0*27 + 0*26 + 1*25 + 0*24 +
0*23 + 1*22 + 1*21 + 0*20 =
0*128 + 0*64 + 1*32 + 0*16 +
0*..8 + 1*.4 + 1*.2 + 0*.1 =
32 + 4 + 2 = 38)

Mit einer Bitmanipulationsfunktion könnte über das Auswerten der Werte in den Bitpositionen das Ergebnis direkt ohne Divisionen und Restwertbildung ermittelt werden, wie die Erläuterung zeigt.
Gruß,
Uwe
Anzeige
Danke euch oT
30.07.2006 20:23:59
Gerhard
o
alternative Lösung - Dez2Bin
30.07.2006 21:44:30
FP
Hallo Gerhard,
zwei alternative Formellösungen: 1 x absteigend, 1 x aufsteigend
Die Formeln aus Zeile 1 bis Zeile 11 runterkopieren
Tabelle1
 ABCD
11777 10241
2  51216
3  12832
4  6464
5  32128
6  16512
7  11024
8    
9    
10    
11    
Formeln der Tabelle
C1 : =KGRÖSSTE(REST(KÜRZEN(A$1/2^{0.1.2.3.4.5.6.7.8.9.10});2)*2^{0.1.2.3.4.5.6.7.8.9.10};ZEILE(A1))
D1 : =WENN(ZEILE(A1)<=SUMME(REST(KÜRZEN(A$1/2^{0.1.2.3.4.5.6.7.8.9.10});2));KKLEINSTE(REST(KÜRZEN(A$1/2^{0.1.2.3.4.5.6.7.8.9.10});2)*2^{0.1.2.3.4.5.6.7.8.9.10};11-SUMME(REST(KÜRZEN(A$1/2^{0.1.2.3.4.5.6.7.8.9.10});2))+ZEILE(A1));0)
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Servus aus dem Salzkammergut
Franz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige