Autor
|
Thema: Zahlen multiplizieren (725 mal gelesen)
|
inv-Kristof Mitglied Dipl-- Ing. (FH)
Beiträge: 1135 Registriert: 01.01.2004 HP 8710w, Win Vista 64x, IV 2009 SP2 Intel® Core™ 2 Duo T9500 2,6 GHz, 4 GB RAM nVidia® Quadro FX 3600M, 17" 1920x1200 ---------------- AMD 64bit 3200+; 2GB DDR400 GeForce 6600GT 128MB Win Vista 64x IV 2009 SP2
|
erstellt am: 09. Mai. 2006 15:28 <-- editieren / zitieren --> Unities abgeben:
Hallo, wieder mal so ein Problem mit der Formel. In A1 steht Blech 2 2000x1000 In A2 steht Blech 6 70x20 usw. Wie kriege ich mit der Formel, dass die Zahlen, die über die Größe des Formats sagen, multipliziert werden? Kurz gesagt: In B1 will ich haben =2000*1000=2000000 In B2 will ich haben =70*20 =1400 Ich kann aber nicht mit Hilfszellen arbeiten Gruß Kristof
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 09. Mai. 2006 15:31 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
|
okl Mitglied Wirtsch-Ing (Maschbau)
Beiträge: 157 Registriert: 21.04.2006 3,6 GHz, 2 GB RAM, NVIDIA Quadro FX 1300, Delmia V5R16 SP1, Win XP Prof SP2, Office 2003, VS 2005, VB 6
|
erstellt am: 09. Mai. 2006 16:27 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
Hallöle! Ist ein schöner Ansatz! Würde mich auch interessieren, wie das ohne Makro gehen soll. Wenn Du innerhalb einer Zelle mehr als nur eine Adresse vergeben könntest, ginge es vielleicht sogar. Ist mir aber nicht bekannt. Also: nimm den Stift und mal etwas! Ein kleines Makro, was die die Zelle ausliest, schaut, ob irgendwo ein "x" drin ist und dann links und rechts davon die Zahlen miteinander multipliziert. Ist doch echt ein Paradebeispiel für eine Automation im Officepaket! Solltest Du doch eine andere Lösung gefunden haben, stell die bitte online! Danke, schüs okl Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 09. Mai. 2006 16:28 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
ich fürchte aber, da kommst Du nicht drumrum. Es gibt zwar die Möglichkeit, Zellinhalte zu splitten, aber Du mußt den Inhalt schon irgendwo hinschreiben, von wo aus Du weiterrechnen kannst. Code: Sub LZ() Dim cell As Range, arr1 For Each cell In Selection arr1 = Split(cell.Value, Chr(32)) If UBound(arr1) Then Range(cell.Offset(0, 1), cell.Offset(0, UBound(arr1) + 1)) = arr1 Next End Sub
Code: Sub x() Dim cell As Range, arr1 For Each cell In Selection arr1 = Split(cell.Value, Chr(120)) If UBound(arr1) Then Range(cell.Offset(0, 1), cell.Offset(0, UBound(arr1) + 1)) = arr1 Next End Sub
Anleitung: zuerst auf Zelle mit "Blech1 70x2000" stellen. Sub LZ() liest das Leerzeichen aus und splittet dort. Danach auf die "befüllte" Zelle "70x2000" stellen und die Sub x() ausführen. Liest das "x" aus. Dann haste den Zellinhalt gesplittet. Sind zwar jetzt Texte, mit denen kannst Du aber weiterrechnen. Allerdings willst Du ja keine Hilfszellen... Bestimmt kann jemand auf sowas aufbauen und innerhalb des Makros rechnen...so auf Anhieb kann ich das nicht, und um mich da reinzuknien hab ich keine Zeit/Lust Gruß, Nicole ------------------ Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
inv-Kristof Mitglied Dipl-- Ing. (FH)
Beiträge: 1135 Registriert: 01.01.2004 HP 8710w, Win Vista 64x, IV 2009 SP2 Intel® Core™ 2 Duo T9500 2,6 GHz, 4 GB RAM nVidia® Quadro FX 3600M, 17" 1920x1200 ---------------- AMD 64bit 3200+; 2GB DDR400 GeForce 6600GT 128MB Win Vista 64x IV 2009 SP2
|
erstellt am: 09. Mai. 2006 16:45 <-- editieren / zitieren --> Unities abgeben:
Hallo Nicole, vielen Dank für deine Mühe. Habe ich vergessen noch zu erwähnen, dass es auch nicht mit Makro gemacht werden kann. Das soll, wenn überhaupt möglich mit der Formel gelöst werden. Bis jetzt konnte ich nur eine Zahl aus der Benennung herausziehen: =TEIL(C2;SUCHEN("x";C2;1)+1;LÄNGE(C2)-SUCHEN("x";C2;1)+10) Gruß Kristof Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 09. Mai. 2006 16:51 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
|
bst Mitglied
Beiträge: 192 Registriert: 31.08.2004 .
|
erstellt am: 09. Mai. 2006 16:57 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
Hallo auch, Warum teilst Du die Daten denn nicht auf, IMHO die einzige wirklich vernünftige Lösung. Zwei Mal Daten-Text in Spalten, einmal nach Leerzeichen, einmal nach x und das Problem ist keines mehr. Ansonsten brauchst Du halt sowas Ähnliches. =TEIL(A1;SUCHEN(" ";A1;SUCHEN(" ";A1;1)+1)+1;SUCHEN("x";A1;1)-SUCHEN(" ";A1;SUCHEN(" ";A1;1)+1)-1)*TEIL(A1;SUCHEN("x";A1;1)+1;99) Wenn NICHT immer 2 Leerzeichen VOR der 1. Zahl stehen sollten, geht's so natürlich nicht. Mit einer UDF wird das Ganze - nochmals IMHO - auch viel einfacher: =regexFind(A1;"(\d+)x")*regexFind(A1;"x(\d+)") sowie sowas wie unten. CU, Bernd --
Code: Option ExplicitFunction RegExFind(wo As Variant, pattern As String) As String Dim re As Object, mc As Object Set re = CreateObject("vbscript.regexp") re.pattern = pattern Set mc = re.Execute(wo) If mc.Count Then If mc(0).Submatches.Count Then RegExFind = mc(0).Submatches(0) Else RegExFind = mc(0) End If End If Set mc = Nothing Set re = Nothing End Function
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
okl Mitglied Wirtsch-Ing (Maschbau)
Beiträge: 157 Registriert: 21.04.2006 3,6 GHz, 2 GB RAM, NVIDIA Quadro FX 1300, Delmia V5R16 SP1, Win XP Prof SP2, Office 2003, VS 2005, VB 6
|
erstellt am: 09. Mai. 2006 17:00 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
War wohl zu spät. hast den ersten Teil doch genauso wie ich. =(TEIL(A1;SUCHEN("x";A1;1)+1;LÄNGE(A1)-SUCHEN("x";A1;1)+0))*TEIL(A1;SUCHEN(" ";A1;7)+1;LÄNGE(A1)-SUCHEN("x";A1;1)+0) @Thomas: deine Variante ist auch schön. Und warst schneller... Tschö Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
inv-Kristof Mitglied Dipl-- Ing. (FH)
Beiträge: 1135 Registriert: 01.01.2004 HP 8710w, Win Vista 64x, IV 2009 SP2 Intel® Core™ 2 Duo T9500 2,6 GHz, 4 GB RAM nVidia® Quadro FX 3600M, 17" 1920x1200 ---------------- AMD 64bit 3200+; 2GB DDR400 GeForce 6600GT 128MB Win Vista 64x IV 2009 SP2
|
erstellt am: 09. Mai. 2006 17:08 <-- editieren / zitieren --> Unities abgeben:
|
inv-Kristof Mitglied Dipl-- Ing. (FH)
Beiträge: 1135 Registriert: 01.01.2004 HP 8710w, Win Vista 64x, IV 2009 SP2 Intel® Core™ 2 Duo T9500 2,6 GHz, 4 GB RAM nVidia® Quadro FX 3600M, 17" 1920x1200 ---------------- AMD 64bit 3200+; 2GB DDR400 GeForce 6600GT 128MB Win Vista 64x IV 2009 SP2
|
erstellt am: 09. Mai. 2006 17:20 <-- editieren / zitieren --> Unities abgeben:
|
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 09. Mai. 2006 17:20 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
|
okl Mitglied Wirtsch-Ing (Maschbau)
Beiträge: 157 Registriert: 21.04.2006 3,6 GHz, 2 GB RAM, NVIDIA Quadro FX 1300, Delmia V5R16 SP1, Win XP Prof SP2, Office 2003, VS 2005, VB 6
|
erstellt am: 09. Mai. 2006 17:39 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
# ist ein Platzhalter für numerische Werte in Excel. Schau mal in die Formateinstellungen -> Zahlen rein, da wirst Du dann fündig und ist anschaulicher mit ein bisschen probieren als hier und jetzt 180 Mio Zeilen zu meißeln. Schüs Cool! Mit diesem Beitrag hab ich jetzt auch meinen Stern. Zwar nicht aufm Walk of fame, aber immerhin bei cad.de [Diese Nachricht wurde von okl am 09. Mai. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
inv-Kristof Mitglied Dipl-- Ing. (FH)
Beiträge: 1135 Registriert: 01.01.2004 HP 8710w, Win Vista 64x, IV 2009 SP2 Intel® Core™ 2 Duo T9500 2,6 GHz, 4 GB RAM nVidia® Quadro FX 3600M, 17" 1920x1200 ---------------- AMD 64bit 3200+; 2GB DDR400 GeForce 6600GT 128MB Win Vista 64x IV 2009 SP2
|
erstellt am: 10. Mai. 2006 08:19 <-- editieren / zitieren --> Unities abgeben:
Hallo Nicole, Frage zu deinen Hilfszellen. Wie würdest du von der Benennung "Blech 2 2000x1000" die Werte für meine Berechnung verteilen? Von Hand?? Ich bräuchte die 3 Werte und zwar: 2, 2000, 1000. Und ich habe 300 verschiedenen Positionen in der Tabelle stehen. Gruß Kristof Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 10. Mai. 2006 09:04 <-- editieren / zitieren --> Unities abgeben: Nur für inv-Kristof
Hallo Kristof, zunächst mal würde ich die Werte von vorneherein auf einem anderen Tabellenblatt in Einzelzellen eingeben und mir die Bezeichnung "Blech 2 70x2000" mit VERKETTEN wieder zusammenfügen. Dann kann ich nämlich alle Berechnungen anstellen, die immer ich möchte, kann mir die Datensätze sortieren, Anzahl der versch. Datensätze auslesen usw. Das Tabellenblatt kann man auch ausblenden (xlHidden mal als Stichwort in den Raum geworfen). Aber OK, haben wir anscheinend nicht. Wenn also die Tabelle schon fix und fertig ist, und Du jetzt nur noch die Auswertung machen willst, dann so, wie ich schon oben beschrieben habe: 1. alle Zellen markieren, die noch den vollen Datensatz beinhalten (Du kannst durchaus ganze Spalten markieren, also ist "von-Hand" gar kein Problem, dann würd' ich aber vorher noch ein ApplicationUpdate = false einbauen) [edit] muß natürlich ApplicationScreenUpdate = False heißen [/edit] 2. Makro LZ ausführen 3. die gesplitteten Werte werden in Spalte "1-nach-rechts" und "2-nach-rechts" von der Ursprungsspalte ausgegeben. 4. diese Spalte markieren und Makro x ausführen 5. wie 3. 6. Jetzt hast Du die Einzelwerte, mit denen Du weiterrechnen kannst. mein Makro läuft momentan unter der Vorraussetzung, daß die Datensätze wie folgt eingegeben sind (Leerzeichen sind wichtig!) Blech2 70x2000 wobei die Anzahl der Zeichen jeweils egal sind, da das Makro nur nach den Zeichen " " und "x" sucht. Mußt Du Dir also evtl. anpassen, oder das LZ - Makro zweimal laufen lassen, dann verschiebt sich das ganze nochmal um 2 Spalten. (Wie gesagt, "Hilfsblatt" anlegen = mein Favorit ) Wenn noch Fragen, fragen! Gruß, Nicole ------------------ Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...
[Diese Nachricht wurde von runkelruebe am 10. Mai. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|