Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
888to892
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
888to892
888to892
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Einfaches Problem - elegante Lösung gesucht

Einfaches Problem - elegante Lösung gesucht
18.07.2007 17:27:54
Adrian1977
Liebes Forum,
um Umwege und Zusatzspalten zu vermeiden, suche ich eine elegante Lösung für ein einfaches Problem:
In
A1 wird ein beliebiger Wert eingegeben
A2: Summe(A3:A10)
A3: beliebiger Wert
A4: beliebiger Wert
.
.
A10: beliebiger Wert
Nun sollen A1 und A2 gleich sein. Ist A1 A2 soll die Differenz entsprechend der bisherigen Verteilung zu A3 bis A10 dazu addiert werden.
Lösung:
B3:$A$1/$A$2*A3
B4:$A$1/$A$2*A4
.
.
B10:$A$1/$A$2*A10
Die errechneten Werte in B3:B10 werden dann nach A3:A10 kopiert.
Geht das eleganter?
Danke + Gruß
Adrian

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einfaches Problem - elegante Lösung gesucht
18.07.2007 17:39:00
Wolli
Hallo Adrian,
da ich mich gerade mit Matrixformeln befasse, fällt mir zuerst das hier ein:
Ein B3:B10 wird {=A1/A2*A3:A10} eingegeben (ohne die {}, jedoch mit Strg+Shift+Enter). Das macht es aber nicht viel eleganter.
Das Problem ist, dass Du hart eingetragene Werte durch neue ersetzen willst, die sich aber auf die alten Werte beziehen. Das geht nur mit einem Makro. Ermittle per Makro den Zuschlags-/Abschlagsfaktor (A1/A2) und multipliziere jede Zelle mit diesem. Etwa so:

faktor = cells(1,1)/cells(1,2)
for i = 3 to 10
cells(i,1) = cells(i,1) * faktor
next i


Gruß, Wolli

Anzeige
AW: Einfaches Problem - elegante Lösung gesucht
18.07.2007 18:10:14
Adrian1977
Hallo Wolli,
das ist richtig, dass das Problem ist, dass alte Werte durch neue ersetzt werden sollen, die neuen jedoch von den alten abhängig sind.
Gibt es denn sonst keine "excel-interne"-Lösung, ähnlich der Funktion "Inhalte einfügen..., Multiplizieren aktivieren" oder Iteration, oder was anderes...? Die Datei wird umfangreicher, der Code dementsprechend kaum noch überschaubar...
Gruß
Adrian

AW: Einfaches Problem - elegante Lösung gesucht
18.07.2007 19:25:00
Daniel
Hallo
warum kannst du das Problem mit BEARBEITEN - INHALTE EINFÜGEN - MULTIPLIZIEREN nicht lösen?
dafür brauchst du doch nur den Faktor in einer Zelle zu berechnen und dann mit der o.g. funktion auf die anderen Zellen anwenden.
Sollte eigentlich genau das machen, was du möchtest.
Gruß, Daniel

Anzeige
AW: Einfaches Problem - elegante Lösung gesucht
18.07.2007 19:52:00
Wolli
Hallo Adrian, per VBA kannst Du Copy und PasteSpecial machen - zeichne es mal mit dem Rekorder auf. Irgendwo muss allerdings der Multiplikator stehen. Und was ist an meinem Code unüberschaubar? Kürzer geht's doch kaum!? Oder willst Du es ohne VBA lösen? Gruß, Wolli

AW: Einfaches Problem - elegante Lösung gesucht
19.07.2007 13:15:00
Adrian1977
Der Code in dieser Form war schon klasse. Problem ist nur, dass dieser Vorgang in unterschiedlichen Bereichen auf vielen Tabellenblätter durchgeführt wird. Da muß ich mir wohl eine gute Struktur überlegen.
Trotzdem vielen Dank!

AW: Einfaches Problem - elegante Lösung gesucht
19.07.2007 13:50:06
Wolli
Hallo Adrian,
noch'n paar Anregungen:
Wenn Du z.B. eine Ereignisprozedur (Worksheet_Change) schreibst, bekommst Du den geänderten Bereich als target mitgegeben. target.currentregion ist dann der Bereich drumherum. Innerhalb dieser currentregion kannst Du dann einen immer gleichen Code laufen lassen, der die Sachen ausfüllt.
Habe aber leider keine Zeit, mehr dazu zu schreiben, stell bei Bedarf den Thread wieder auf offen / mach 'ne neue Anfrage. 'S gibt hier aber auch schon tausend Tipps für Ereignisprozeduren!
Gruß, Wolli
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige