Excel-Auswertung mit activex < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) überfällig | Datum: | 09:57 Fr 27.09.2013 | Autor: | ratmic |
Aufgabe | Excel Daten mit active-x auslesen und filtern:
exl = actxserver('excel.application')
exlWkbk = exl.Workbooks
exlFile = exlWkbk.Open([(strPfad) [mm] '\' [/mm] ('Getriebe13_06_10-06_30.xls')])
exlSheet2 = exlFile.Sheets.Item('Ergebnisse')
%Sheet mit den erforderlichen Daten heißt 'Ergebnisse'
robj = exlSheet2.Columns.End(4);%Auf vier leere Zeilen eingestellt
numrows = robj.row;
dat_range = ['A5:Q' num2str(numrows)] % Bereich der eingelesen wird
rngObj = exlSheet2.Range(dat_range)
[data] = rngObj.Value;
|
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Hallo liebe Mitglieder,
derzeit stoße ich im Praxissemester auf ein Problem:
Die Aufgabenstellung besteht darin, eine GUI für eine Fehlerprotokollauswertung auf ein anderes System zu erweitern. Dabei ist ein Excel Protokoll mit folgenden Eigenschaften als ein Struct in den Workspace zu übertragen:
-Dynamisch: Die Länge der Liste kann bis 60000 Zeilen (max-Wert/Excel) variieren.
-Statisch: Spaltenzahl (bis "Q"), Reitername ("Ergebnisse") und der Kopf A1:A4 bleiben gleich.
Aufgabe ist es:
Ich schaffe es schon die Liste vollständig auszulesen, jedoch ist es nicht effektiv, kürzere Tabellen ebenfalls bis Zeile 60.000 auszulesen (Da es sich auch um einige Protokolle handeln kann).
Nun möchste ich über einen gefundenen Weg, das Ganze erweitern, damit die Steuerung selbsständig das Ende der Liste findet und bei A5 beginnt (A5:Q'Ende').
Nach folgendem Code besteht das Problem, dass dieser die Leerzeilen am Protokollkopf direkt als Ende festlegt. Es sucht sich selbst das Ende anhand leerer Zeilen (maximal vier aufeinanderfolgenden leere Zeilen, ansonsten Fehler).
Hätte jemand eine Idee zu diesem Problem?
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 12:23 Di 01.10.2013 | Autor: | adlerbob |
Hi!
Wie wird die Tabelle dynamisch verändern?
von Hand im Exell?
dann wäre möglich einfach die Länge irgendwo noch automatisch zu berechnen, und diese Zeile dann in deinem Code auszulesen.
Falls aber nicht wäre möglich einfach schleifen nach leere zeilen duchzusuchen fürs Ende.(nicht jede sondern jede 20-50 für mehr geschwindigkeit).
Bin aber nicht vom Fach, also nur so als Anregung
lg
adlerbob
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 12:42 Di 01.10.2013 | Autor: | chrisno |
Meine Zeit mit VBA liegt fast zehn Jahre zurück. Kurzes googeln "Excel letzte Zeile ermitteln" gibt mir Cells.SpecialCells(xlLastCell).Row
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 09:20 Mo 28.10.2013 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|