问题
I'm trying to learn LibreOffice's scripting capabilities, and have a specific scenario that I haven't been able to figure out.
What I'm trying to do is get the value from another worksheet, by doing a search for a specific value in an adjacent cell.
For example, lets say I have two worksheets:
Worksheet1
And Worksheet2
What i'm trying to do, is populate each value in Worksheet1, Column B with the associated value from Worksheet2, Column B. The way I'm trying to do this is to write a statement that finds and uses the month in Worksheet1 as the search criteria against Worksheet2, Column C.
So far I haven't had much luck, but here's what I've been trying to work with:
='Worksheet2'.$C.FIND('Worksheet1'.$A1).$B1
This is more than likely wrong, but I'm trying to express the logic, which is "in Worksheet2, find the value from Worksheet1:$A1, and give me the value from Worksheet2:$B1"
Essentially what it comes down to is that I do not yet understand the syntax and paradigms of this language.
Any thoughts on how I can accomplish what I'm trying to do above?
Also, I would be interested in any links for online tutorials about this language (LibreOffice Basic?)
Thanks in advance!
回答1:
There is a function called VLOOKUP that you might want to try.
Syntax for your example would be:
=VLOOKUP(A1,'Worksheet2'.B1:C12,1)
回答2:
I just adapt a routine of mine to your problem. It should work... Assuming both sheets don't have empty lines:
Sub MergeSheets
Dim Ind as Integer
Dim oSheet1, oSheet2
Dim oDocument as Object
oDocument = thisComponent
' Destination Sheet
dSheet = oDocument.getSheets().getByName("Worksheet1")
' Origin Sheet
oSheet = oDocument.getSheets().getByName("Worksheet2")
oCount = 0
oCell = oSheet.getCellByPosition(0,oCount)
while oCell.Formula <> ""
' Search for the matching line
dCount = 0
dCell = dSheet.getCellByPosition(2,0)
while dCell.Formula <> "" and dCell.Formula <> oCell.Formula
dCount = dCount + 1
dCell = dSheet.getCellByPosition(2,dCount)
wend
' Set Value to the destination cell
' If Key was not found, the last empty line will be used
fCell = dSheet.getCellByPosition(1,dCount)
if fCell.Formula = ""
fCell.Formula = "="+oSheet.getCellByPosition(1,dCount).Formula
else
fCell.Formula = fCell.Formula+'+'+oSheet.getCellByPosition(1,dCount).Formula
end if
oCount = oCount + 1
oCell = oSheet.getCellByPosition(0,oCount)
wend
End Sub
来源:https://stackoverflow.com/questions/15686836/libreoffice-referencing-cells-in-another-worksheet-via-find-lookup-or-ex