| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: indirect (3502 mal gelesen)
|
daniu Mitglied Mechanik-Entwickler
  
 Beiträge: 866 Registriert: 03.11.2004 Intel Xeon W3550 12GB RAM; NVidia Quadro 4000 Win 7 Enterprise 64bit; NX7.5 TeamCenter 8
|
erstellt am: 10. Aug. 2012 10:31 <-- editieren / zitieren --> Unities abgeben:         
Hallo, bei meinem Excel geht indirect() nicht sondern nur indirekt - im Internet findet man aber als englisches Original von indirekt: indirect. Normal nimmt mein Excel englische Bezeichnungen - mir ist das lieber, weil ich dann nicht übersetzen muss, wenn ich das Excel ins Ausland gebe... Gruß Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
       

 Beiträge: 8086 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 10. Aug. 2012 11:47 <-- editieren / zitieren --> Unities abgeben:          Nur für daniu
Moin, Office-Version? Bitte Systeminfo ans Brett anpassen, danke. Google hat folgende Meinung: >> klick1 << Interessant finde ich z.B. >> diese << Erklärung von Thomas Ramel ganz unten, nach der Du das gar nicht brauchst. Und zwei Listen: >> klick1 << >> klick2 << evtl. hilft Dir irgendwas davon ja schon weiter. ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daniu Mitglied Mechanik-Entwickler
  
 Beiträge: 866 Registriert: 03.11.2004 Intel Xeon W3550 12GB RAM; NVidia Quadro 4000 Win 7 Enterprise 64bit; NX7.5 TeamCenter 8
|
erstellt am: 13. Aug. 2012 17:01 <-- editieren / zitieren --> Unities abgeben:         
Hi, OK - trotzdem Problem: ich würde gerne indirekt in zusammenhang mit einem Excel VBA Script verwenden und zwar mit der Linst (RGP Funktion) Ausgangspunkt ist folgender Ausdruck: =INDEX(RGP(E9:E19;A9:A19);1) 9 und 19 sollen variabel sein. Am Ende am liebsten über einen S-Verweis, aber zunächst Mal würde ich die beiden gerne einfach festlegen können ... Leider funktioniert schon in Excel das: =INDEX(RGP(INDIREKT(E32)) nicht (wobei in E32 genau: E9:E19;A9:A19 steht) ich bekomme #Bezug Was kann ich machen? Muss E32 ein bestimmtes Format haben? Auch mit Kommas statt Strichpunkt klappt es nicht und auch nicht, wenn ich alles einzeln zusammensetze, also in 2 einzelne Zellen 9 und 19 schreibe. Grüße Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Comos User Mitglied
 
 Beiträge: 112 Registriert: 23.03.2010
|
erstellt am: 14. Aug. 2012 08:33 <-- editieren / zitieren --> Unities abgeben:          Nur für daniu
Moin Daniel, 1. Die Funktion RGP erwartet 1 bis 4 Parameter, wobei die beiden ersten vom Typ Range sind, das mußt du dann auch so übergeben. z.B. Code: =INDEX(RGP(INDIREKT(E32);INDIREKT(E33)))
wobei in E32 dann "E9:E19" und in E33 "A9:A19" stehen könnte oder auch Code: =INDEX(RGP(INDIREKT("E" & E32 & ":E" & E33);INDIREKT("A" & E32 & ":A" & E33)))
wobei dann in E32 die 9 und in E33 die 19 stehen sollte.Ich will jedoch nicht versäumen vor der intensieven Nutzung von INDIREKT zu waren, denn erstens ist die Funktion (also INDIREKT) verständlicherweisen aufwendig und somit langsam, und zweites führt es dazu, dass der gesammte Ausdruck 'volatil' wird. Das heißt er wird bei jeder Änderung im Tabellenblatt (egal ob das Ergebniss dadurch beeinfußt wird oder nicht) neu berechnet, und das ist bei Statistikfunktionen ja nicht gerade trivial. 2. In VBA wird die Sache etwas anders notiert. Die Funktion heist 'Workseetfunction.LinEst' und erwartet die selben Parameter. Also etwa so: Code: Dim XX As Range Dim YY As RangeDim x As Long Dim y As Long y = 9 'hier kannst du natürlich belibige Werte zuweisen x = 19 Set XX = Range(Cells(y, 5), cell(x, 5)) ' vobei 5 für Spalte E steht Set YY = Range(Cells(y, 1), cell(x, 1)) ' vobei 1 für Spalte A steht 'auch die Spalten könntest du natürlich Variabel halten erg = worksheetfunction.LinEst(XX, YY)
Ich hoffe dir damit ein wenig geholfen zu haben Gruß Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daniu Mitglied Mechanik-Entwickler
  
 Beiträge: 866 Registriert: 03.11.2004 Intel Xeon W3550 12GB RAM; NVidia Quadro 4000 Win 7 Enterprise 64bit; NX7.5 TeamCenter 8
|
erstellt am: 14. Aug. 2012 09:47 <-- editieren / zitieren --> Unities abgeben:         
Hi! Werde das Mal nachvollziehen. Der erste Teil funktioniert schonmal. Das mit dem volatil habe ich schon gelesen, ist in dem Fall aber erstens nicht schlimm und zweitens wohl auch nicht anders zu machen. Ich möchte eine große Anzahl an Blättern abarbeiten. Wie lange das geht, ist eher egal. Kann ich solche Formeln in VBA nicht auch einfach mit .Formula = zuweisen? Grüße Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daniu Mitglied Mechanik-Entwickler
  
 Beiträge: 866 Registriert: 03.11.2004 Intel Xeon W3550 12GB RAM; NVidia Quadro 4000 Win 7 Enterprise 64bit; NX7.5 TeamCenter 8
|
erstellt am: 24. Aug. 2012 09:18 <-- editieren / zitieren --> Unities abgeben:         
Hi, leider muss ich das ganze jetzt aus bestimmten Gründen in R1C1 umformulieren, deshalb nochmal. Dabei hab ich allerdings das gleiche Problem - und zwar schon bei Indirekt: ich schreibe in eine Zelle: =INDIREKT("Z" & Z(1)S & "S1") in der Zelle drunter steht 9, sodass ich davon ausgehen würde, dass aus Indirekt: "Z9S1" wird und er mir den entsprechenden Inhalt liefert. Ich bekomme aber ein #Bezug Entsprechend führt: =Verketten("Z" & Z(1)S & "S1") zu: Z9S1 und: =Z9S1 zu: -1 (was in Zelle Z9S1 steht) Was mach ich falsch? Gruß Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Comos User Mitglied
 
 Beiträge: 112 Registriert: 23.03.2010
|
erstellt am: 24. Aug. 2012 10:09 <-- editieren / zitieren --> Unities abgeben:          Nur für daniu
Hi Daniel, Du mußt der Indirekt - Funktion sagen daß sie RC Bezüge (bzw keine A1 Bezüge) zuerwarten hatt. Code: =INDIREKT("Z" & Z(1)S & "S1";FALSCH)
Steht auch so in der Hilfe! Gruß Peter [Diese Nachricht wurde von Comos User am 24. Aug. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daniu Mitglied Mechanik-Entwickler
  
 Beiträge: 866 Registriert: 03.11.2004 Intel Xeon W3550 12GB RAM; NVidia Quadro 4000 Win 7 Enterprise 64bit; NX7.5 TeamCenter 8
|
erstellt am: 24. Aug. 2012 12:09 <-- editieren / zitieren --> Unities abgeben:         
Hi, Das hat mich schon viel weiter gebracht. Leider geht es grad so weiter: ich möchte die Formel in VBA ausgeben lassen. Normalerweise muss ich ja in VBA englisch, also R1C1 programmieren. Die Teile, die ich aber im Indirect habe, kommen dann in Excel auch als R1C1 an, obwohl mein excel deutsch ist. Muss ich in dem Teil von indirect mit Z und S programmieren? Heißt dass, das ich damit keine Scripte schreiben kann, die international sind? Gruß Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daniu Mitglied Mechanik-Entwickler
  
 Beiträge: 866 Registriert: 03.11.2004 Intel Xeon W3550 12GB RAM; NVidia Quadro 4000 Win 7 Enterprise 64bit; NX7.5 TeamCenter 8
|
erstellt am: 24. Aug. 2012 12:16 <-- editieren / zitieren --> Unities abgeben:         
|
Comos User Mitglied
 
 Beiträge: 112 Registriert: 23.03.2010
|
erstellt am: 24. Aug. 2012 13:44 <-- editieren / zitieren --> Unities abgeben:          Nur für daniu
Hi Daniel, Zitat: Heißt dass, das ich damit keine Scripte schreiben kann, die international sind?
eigentlich nicht. 1. Scripe sind immer international 2. Bei Formeln hatt man die Wahl zwischen .Formula und FormulaLocal, (auch in der Variante R1C1) 3. Der Inhalt von Strings (und ein solcher ist ja der Parameter von INDIREKT) wir niemals übersetzt, wäre auch fatal Also nur wer mit VBA Formeln schreibt (was allein schon ungewöhnlich ist) und dann auch noch Funktionen wie Indirekt verwendet stößt auf solche Probleme. An deiner stelle würde ich mich entscheiden, - willst du eine Lösung mit VBA, dann brauchst du kein indirekt - willst du eine Lösung mit Formeln, dann stellt sich diese Frage nicht Als (faulen) Kompromiss könnte man nur für Indirekt auch die A1 Schreibweise nutzen. Wie gezeigt wird die Arbeitsweise von Indirekt über einen Parameter gesteuert (unabhängig von den Allgemeinen EXCEL Einstellungen). Gruß Peter P.S. es gibt in Excel schlimmere Sprachverwirrungen >>Klick<< Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daniu Mitglied Mechanik-Entwickler
  
 Beiträge: 866 Registriert: 03.11.2004 Intel Xeon W3550 12GB RAM; NVidia Quadro 4000 Win 7 Enterprise 64bit; NX7.5 TeamCenter 8
|
erstellt am: 27. Aug. 2012 13:35 <-- editieren / zitieren --> Unities abgeben:         
Hi, ich finde das nicht sooo ungewöhnlich und finde es (in meiner Situation) sehr passend. Ich werte dutzende von Zahlen in Excel aus und möchte danach schnell in der Lage sein, kleine Änderungen an der Auswertung zu machen. Mit diesem Konstrukt kann ich theoretisch die Werte von hunderten Datenblättern Mal kurz anders berechnen lassen. Würde ich das alles fix in vba machen, müsste ich dazu dann alles neu berechnen lassen. Naja - wie auch immer. Der Grund, dass ich R1C1 nehmen möchte, ist, dass ich die gesamte Prozedur rechts neben der ersten Berechnung noch einmal durchführen möchte. Würde ich das in A1 machen, müsste ich viele Befehle 2 Mal schreiben. So, kann ich die Spalte mit einer Variable versehen, die entsprechend hochzählen und die Prozedur nochmal durchziehen. Ich mach es jetzt mit Adresse() - da geht das dann auch ... Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |