Vbscript 具有多个返回值的VLOOKUP Libre Office VB

Vbscript 具有多个返回值的VLOOKUP Libre Office VB,vbscript,libreoffice,libreoffice-calc,Vbscript,Libreoffice,Libreoffice Calc,我正在寻找一个在单元格中返回多个值的VLOOKUP函数。有时,您正在搜索的列包含多个值 例如,我有一个在Woocommerce中导入的产品列表,这些产品有变量和变化。我想用变量的所有属性作为列表填充变量的属性单元格。然后我在父列中搜索ID并返回属性列表 这是我的发现 'E2 = searchCell = SKU '3 = columNumWhereToSearch = Parent '6 = columnNumWhatToGet = Attribute Function MULTIPLE_VL

我正在寻找一个在单元格中返回多个值的VLOOKUP函数。有时,您正在搜索的列包含多个值

例如,我有一个在Woocommerce中导入的产品列表,这些产品有变量和变化。我想用变量的所有属性作为列表填充变量的属性单元格。然后我在父列中搜索ID并返回属性列表

这是我的发现

'E2 = searchCell = SKU
'3 = columNumWhereToSearch = Parent
'6 = columnNumWhatToGet = Attribute

Function MULTIPLE_VLOOKUP(searchCell, columNumWhereToSearch, columnNumWhatToGet) As String
    Dim Doc As Object
    Dim Sheet As Object
    Dim Cell As Object   
     
    Doc = ThisComponent
    Sheet = Doc.Sheets(0)

    Dim AttributeListString As String
    AttributeListString = ""
    
    'Set the number of row to search
    For I = 1 To 150
        CellToSearch = Sheet.getCellByPosition(columNumWhereToSearch, I)
        If CellToSearch.String = searchCell then
            CellToGetAndReturn = Sheet.getCellByPosition(columnNumWhatToGet, I).String
            If Len(CellToGetAndReturn) > 0 And CellToGetAndReturn <> "Err:522" And CellToGetAndReturn <> "Err:508" And CellToGetAndReturn <> "#NAME?"  And CellToGetAndReturn <> "#NULL!" And CellToGetAndReturn <> "#VALUE!" And CellToGetAndReturn <> "#REF!" then
                If Len(AttributeListString ) > 0 then
                    AttributeListString = AttributeListString + ","
                End If
                AttributeListString = AttributeListString + CellToGetAndReturn
            End If
        End If
    Next I
    multiple_vlookup = AttributeListString
End Function
'E2=searchCell=SKU
'3=列WheretoSearch=父项
'6=columnNumWhatToGet=属性
函数MULTIPLE_VLOOKUP(searchCell、columNumWhereToSearch、columnNumWhatToGet)作为字符串
Dim Doc作为对象
将图纸变暗为对象
作为对象的暗淡单元
Doc=此组件
工作表=文件工作表(0)
Dim AttributeListString作为字符串
AttributeListString=“”
'设置要搜索的行数
对于I=1到150
CellToSearch=Sheet.getCellByPosition(列WhereToSearch,I)
如果CellToSearch.String=searchCell,则
CellToGetAndReturn=Sheet.getCellByPosition(ColumnUmWhatToGet,I).String
如果Len(CellToGetAndReturn)>0,CellToGetAndReturn“Err:522”,CellToGetAndReturn“Err:508”,CellToGetAndReturn“NAME”,CellToGetAndReturn“NULL!”和CellToGetAndReturn“VALUE!”以及CellToGetAndReturn“REF!”,那么
如果Len(AttributeListString)>0,则
AttributeListString=AttributeListString+“,”
如果结束
AttributeListString=AttributeListString+CellToGetAndReturn
如果结束
如果结束
接下来我
multiple_vlookup=属性列表字符串
端函数

使用它时要像
=MULTIPLE_VLOOKUP(E2;4;7)

@73k04 No。它不会工作。不是
Sub
而是
Function
,不是所有错误都被检查(Err:508、#DIV/0!等),代码结束被跳过。。。我不能找到这个答案有用,但我也认为它是有害的-它误导那些正在寻找一个解决他们的问题的人。请更改您的答案,完成它,我将撤回我的反对票。您好@johnson谢谢您的反馈,我试图纠正它,我测试了代码,它在我这边起作用,让我知道您的想法。是的,这样更好,我收回了我的反对票。这仍然不是一个理想的解决方案(它只在电子表格的第一页上有效,在其他页上它会给出错误的结果;在错误列表中,“NAME?”被命名两次;获取值​​来自单元格,而不是数组)。我还没有在工作中测试过这段代码,但是如果你声称它对你有效,我很乐意相信。嗨,再次感谢你的反馈,我删除了错误代码检查中多余的“#NAME?”。对于第二页,我真的不知道,我只需要第一页,如果有人需要,我想分享我的代码。。。