WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

xlswrite in for-Schleife mit Laufvariable

 

Annika

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2013, 21:16     Titel: xlswrite in for-Schleife mit Laufvariable
  Antworten mit Zitat      
Hey,

ich sitze gerade an einem Matlab-Programm und schreibe in eine Excel-Datei. Nun muss ich mit einer For-Schleife, bei mir mit dem Index i, Zellen in der Excel-Datei füllen. Für die Range im xlswrite-Befehl muss man aber ja diese A1 Notation von Excel verwenden.

Meine Frage also: Wie kann ich z.B. (3, 6*i+5) als Zelle darstellen, sodass es von Matlab angenommen und in Excel richtig angezeigt wird? Mit cells funktioniert es leider nicht.

Vielen Danke im Voraus für eure Hilfe!

Gruß Annika=)


markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 15.06.2013, 23:33     Titel:
  Antworten mit Zitat      
Mit
Code:

> stringhelper=''';
> s=['A':'Z']
s = ABCDEFGHIJKLMNOPQRSTUVWXYZ
 


Einen String erstellen, und die Range-Angabe mit sprintf einbringen

Code:


xlswrite(..., sprintf('%s%s%s%s:%s%s%s%s', stringhelper, s(i), i, stringhelper, stringhelper, s(i), i, stringhelper));

 


Wenn i z.B. gerade 3 ist, sollte das ein xlswrite( ..., 'C3:C3') erzeugen.

Mir wäre das zu unübersichtlich (vlt geht es aber auch anders (oder willst du nur bestimmte Werte in deiner Iteration in der Exceldatei ersetzen?)) und zu langsam (unter Windows wird mit jeder Iteration erneut die Excel API zum speichern aufgerufen.).
Ich würde das Ergebnis einfach in einer Matrize speichern und nach der Schleife in einem ruck als Excel Datei exportieren.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
Annika

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2013, 09:56     Titel:
  Antworten mit Zitat      
Vielen Dank schon einmal, habe es mal probiert. Da ich keinen Bereich, sondern nur eine Zelle ansprechen wollte, sieht mein Code nun so aus:

Code:

s='A':'Z';
for i=0:3
    xlswrite('filename.xls', i+1, 'Tabelle1', 's(7*i+3)5');
end


Müsste es so nicht eigentlich funktionieren? Ich erhalte dann aber folgende Fehlermeldung:
Error using xlswrite (line 220)
Excel returned: Error: Object returned error code: 0x800A03EC.[/code]
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 16.06.2013, 10:11     Titel:
  Antworten mit Zitat      
Nein.
Code:

octave:1> s='A':'Z';
octave:2> s
s = ABCDEFGHIJKLMNOPQRSTUVWXYZ
octave:3> s(7*i+3)5
parse error:

  syntax error

>>> s(7*i+3)5
            ^
octave:3> i=1
i =  1
octave:4> s(7*i+3)5
parse error:

  syntax error

>>> s(7*i+3)5
            ^


octave:3>
 

Von der syntax her rufst du s schon falsch auf. Ferner musst du es mit sprintf einbringen, da du in der xlswrite Option ' ' ein String bringen musst, was du mit 's(7*i+3)5' nicht machst.

Code:

octave:4> sprintf('s(7*i+3)5')
ans = s(7*i+3)5
octave:5> sprintf('%s',s(7*i+3))
ans = J
 

Das sind zwei verschiedene Sachen.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
Annika

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2013, 11:04     Titel:
  Antworten mit Zitat      
So ich habe das Problem nun gelöst..

In dem xlswrite-Befehl muss es so aussehen:

Code:

xlswrite('filename.xls', i+1, 'Tabelle1', [s(7*i+3) num2str(5)] );


Der Tipp mit der Zeichenkette von A bis Z war sehr gut:)
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 16.06.2013, 11:08     Titel:
  Antworten mit Zitat      
Oh ja, das ist eleganter als sprintf Laughing
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.