von stefanak » Sa, 15.07.2006 09:14
Hallo,
das nur über die Calc zu lösen ist nicht sehr bequem.
Besser geht das via Macro mit einem Button ( hab ich schon gemacht) oder Tastenkombination (hab ich noch nicht gemacht).
Du solltest wissen wie viele Zeilen die Tabellen haben oder besser noch das im Macro mit überprüfen.
Dann liest Du die erste Serien-Nummer ein und überprüfst diese mit allen Zeilen in Tabelle 2.
Bei Erfolg wird die Zeile ausgelesen und in Tabelle 3 geschrieben, wobei ein Zöhler eingebaut sein muß, damit sich Tabelle 3 auch füllt.
Code: Alles auswählen
Sub Seriennummer
DIM iCount(3) as Integer REM Zähler für Tabellenzeilen
DIM sSerieNrT(3) as String REM Variable für Seriennummer-Vergleich
DIM sInhalt(8) as String REM Anzahl der auszulesenden Spalten
oDoc = ThisComponent
oCon = oDoc.GetCurrentController()
FOR i=0 TO iCount(1)
oSheet = oDoc.Sheets.getByName("Tabelle1")
oCell = oSheet.getCellByPosition(0, i)
IF oCell.getType() <> 0 THEN
iCount(1) = iCount(1) +1
sSerieNrT(1) = oCell.getString
FOR z=0 TO iCount(2)
oSheet = oDoc.Sheets.getByName("Tabelle2")
oCell = oSheet.getCellByPosition(0, z)
IF oCell.getType() <> 0 THEN
iCount(2) = iCount(2) +1
sSerieNrT(2) = oCell.getString
IF sSerieNrT(1) = left(sSerieNrT(2), 4) THEN
FOR x=0 TO 8 REM Anzahl der auszulesenden Spalten
oCell = oSheet.getCellByPosition(x, z)
sInhalt(x) = oCell.getString
NEXT
iCount(3) = iCount(3) +1
oSheet = oDoc.Sheets.getByName("Tabelle3")
FOR x=0 TO 8 REM Anzahl der zu schreibenden Spalten
oCell = oSheet.getCellByPosition(x, iCount(3))
oCell.setString( sInhalt(x) )
NEXT
ENDIF
ENDIF
NEXT
ENDIF
NEXT
End Sub
So in etwa.
Hallo,
das nur über die Calc zu lösen ist nicht sehr bequem.
Besser geht das via Macro mit einem Button ( hab ich schon gemacht) oder Tastenkombination (hab ich noch nicht gemacht).
Du solltest wissen wie viele Zeilen die Tabellen haben oder besser noch das im Macro mit überprüfen.
Dann liest Du die erste Serien-Nummer ein und überprüfst diese mit allen Zeilen in Tabelle 2.
Bei Erfolg wird die Zeile ausgelesen und in Tabelle 3 geschrieben, wobei ein Zöhler eingebaut sein muß, damit sich Tabelle 3 auch füllt.
[code]
Sub Seriennummer
DIM iCount(3) as Integer REM Zähler für Tabellenzeilen
DIM sSerieNrT(3) as String REM Variable für Seriennummer-Vergleich
DIM sInhalt(8) as String REM Anzahl der auszulesenden Spalten
oDoc = ThisComponent
oCon = oDoc.GetCurrentController()
FOR i=0 TO iCount(1)
oSheet = oDoc.Sheets.getByName("Tabelle1")
oCell = oSheet.getCellByPosition(0, i)
IF oCell.getType() <> 0 THEN
iCount(1) = iCount(1) +1
sSerieNrT(1) = oCell.getString
FOR z=0 TO iCount(2)
oSheet = oDoc.Sheets.getByName("Tabelle2")
oCell = oSheet.getCellByPosition(0, z)
IF oCell.getType() <> 0 THEN
iCount(2) = iCount(2) +1
sSerieNrT(2) = oCell.getString
IF sSerieNrT(1) = left(sSerieNrT(2), 4) THEN
FOR x=0 TO 8 REM Anzahl der auszulesenden Spalten
oCell = oSheet.getCellByPosition(x, z)
sInhalt(x) = oCell.getString
NEXT
iCount(3) = iCount(3) +1
oSheet = oDoc.Sheets.getByName("Tabelle3")
FOR x=0 TO 8 REM Anzahl der zu schreibenden Spalten
oCell = oSheet.getCellByPosition(x, iCount(3))
oCell.setString( sInhalt(x) )
NEXT
ENDIF
ENDIF
NEXT
ENDIF
NEXT
End Sub[/code]
So in etwa.