Excel < Tabellenkalkulationen < Anwendungsprogramme < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 20:26 Di 17.05.2011 | Autor: | barsch |
Hallo,
habe eine Frage zu Excel. Ich möchte eine quadratische Matrix in Excel anlegen, die auf der Diagonalen Einträge enthält, ansonsten nur 0.
Und zwar soll in (A1;1)=z, [mm] (B2;2)=z^2; (C3;3)=z^3 [/mm] usw. stehen:
[mm]\pmat{ z & \cdots & 0 \\
\vdots & \ddots & \vdots\\
0 & \cdots & z^x}[/mm]
Es ist eine 1000x1000-Matrix, weswegen die Eintragung der einzelne Werte per Hand die zu Verfügung stehende Zeit überschreiten würde und ABM nicht Sinn dieser Aufgabe ist. Selbst, wenn ich es mit Formeln versuche, komme ich immer wieder dahin, dass ich 1000 mal die Formel anpassen muss; nämlich für jede Zeile bzw. Spalte. Gibt es da eine Möglichkeit oder muss ich eine andere Lösung suchen. Das ist nur ein Teilproblem völlig aus dem Zusammenhang gerissen. Ansonsten müsste ich das Problem auf eine andere Weise lösen.
Vielen Dank und viele Grüße
barsch
|
|
|
|
Hallo,
wenn du es händisch machen möchtest, kannst du natürlich auch irgendwie die Zeilen- und Spaltennummer abfragen. Oder aber du legst dir am oberen und am linken Rand eine Zeile bzw. Spalte mit den Spalten- und Zeilennummern an, und dann bastelst du dir eine Formel, die eben [mm] z^n [/mm] einträgt, wenn beide Nummern übereinstimmen, sonst 0 oder nichts. Eine Alternative wäre ein VB-Makro bzw. Modul. Das wäre vermutlich sogar vorzuziehen, weil das Füllen von 1 Mio. Excel-Zellen per Kopieren und Einfügen benötigt vermutlich eine ordentliche Portion Rechner-Ressourcen...
Gruß, Diophant
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 20:48 Di 17.05.2011 | Autor: | barsch |
Hi,
danke für die schnelle Antwort. Oh, VBA - da kenne ich mich ja mal so gar nicht mit aus.
> Hallo,
>
> wenn du es händisch machen möchtest,
eben nicht
> kannst du natürlich
> auch irgendwie die Zeilen- und Spaltennummer abfragen. Oder
> aber du legst dir am oberen und am linken Rand eine Zeile
> bzw. Spalte mit den Spalten- und Zeilennummern an, und dann
> bastelst du dir eine Formel, die eben [mm]z^n[/mm] einträgt, wenn
> beide Nummern übereinstimmen, sonst 0 oder nichts.
das habe ich gemacht. Aber wenn du dann "ziehst" (ich hoffe, du weißt, was ich meine - kenne keinen anderen Ausdruck dafür), musst du, wenn du die Zeile lang ziehst, eine Zelle konstant halten. Die ist dann für alle Zellen konstant. Wenn man jetzt die Spalten zieht, muss aber genau dieser Wert wieder variabel sein, d.h. ich müssen 1000 mal die Dollarzeichen eliminieren und viel öfter die Dollarzeichen wieder einfügen, weil ja jetzt ein anderer Wert konstant bleiben muss. Ach ja, kompliziert... Ich glaube, ich suche nach einer anderen Lösung.
Aber danke für die schnelle Antwort. Sonst hätte ich jetzt noch einige Zeit damit verschwendet, eine Lösung dafür zu suchen.
Gruß
barsch
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:01 Di 17.05.2011 | Autor: | Diophant |
Hallo,
hab gerade mein Excel 2010 angeschmissen. Dort gibt es die Befehle Zeile(Bezug) bzw. Spalte(Bezug). Bezug ist dabei die Adresse einer Zelle, beide Befehle akzeptieren die Zelle, in der sie selbst stehen, als Argument. Wenn du also einen dementsprechend ausgestatteten Rechner hast, kannst du ja mal spaßeshalber deine Matrix mit dem Befehl
IF(Zeile(akt. Zelle)=Spalte(aktuelle Zelle);z^Zeile(akt. Zelle);0)
füllen. Aber ich übernehme keinerlei Garantie für eventuelle Abstürze. :-P
Gruß, Diophant
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:13 Di 17.05.2011 | Autor: | barsch |
Hallo Diophant,
vielen Dank für die Mühe. Ich werde das auf jeden Fall mal ausprobieren. Und wenn mir der Rechner um die Ohren fliegt, komme ich auf dich zurück
Wäre klasse, wenn dein Vorschlag oder der von reverend hinhauen würde. Das würde mir sehr helfen. Also, ich probier's aus und melde mich..
Gruß
barsch
|
|
|
|
|
Hallo barsch,
mir scheint es auch sinnvoller, das in irgendeiner Sprache zu programmieren.
Aber wenn Du es unbedingt mit Excel machen willst (ab Version 2007 mit max. 16384 Spalten, vorher nur 256), dann so:
Setze alle Zellen der ersten Zeile und der ersten Spalte=0.
Setze A1=z.
Setze B2=A1*z
Kopiere B2 (genauer: die Formel aus B2) in alle Zellen außer denen der ersten Zeile bzw. Spalte.
Grüße
reverend
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:10 Di 17.05.2011 | Autor: | barsch |
Hallo Reverend,
ich weiß, mit Java wäre das zum Beispiel kein Problem. Es muss aber in Excel sein .
Mit deinem Vorschlag werde ich es mal versuchen, nachdem ich den von Diophant ausprobiert habe. Wenn einer von euren Vorschlägen funktionieren würde, wäre mir sehr geholfen.
Danke.
Gruß
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:16 Di 17.05.2011 | Autor: | reverend |
Hallo barsch,
der Vorschlag von Diophant ist ok, aber für den vorliegenden Fall unnötig kompliziert.
Meinen habe ich mit Excel 2003 in einer 256*256-Matrix ausprobiert, das ging blitzschnell zu erzeugen.
Ich habe sowohl ein direkt eingebenes z (bei mir in der in B2 stehenden Formel =A1*1,01) als auch ein referenziertes z in Zelle A1, so dass die linke obere Ecke der Matrix erst in B2 steht und C3 die Formel =B2*$A$1 enthält, ausprobiert.
Beides ging schnell und tadellos.
Grüße
reverend
|
|
|
|