使用Excel和VBA在字符串中查找?

使用Excel和VBA在字符串中查找?,vba,excel,Vba,Excel,我有一个电子表格,里面有几个工作表,一个是产品清单,一个是材料清单 我正在试图找出如何有另一个工作表,在那里我可以查找产品代码,从产品库存中提取描述,并从材料库存中提取所需的材料。我知道如何在其他语言中做到这一点,但我非常局限于Excel,我不知道如何做到这一点 假设我有产品查找:$B$2=“ps26k417”,我已经有了从产品库存中提取信息的产品描述,花园门靛蓝/亚麻天然26x26 KE纤维枕头*,但现在我需要弄清楚如何从材料库存中提取 根据产品描述,我需要从物料清单中抽出两行。。我需要一种基

我有一个电子表格,里面有几个工作表,一个是产品清单,一个是材料清单

我正在试图找出如何有另一个工作表,在那里我可以查找产品代码,从产品库存中提取描述,并从材料库存中提取所需的材料。我知道如何在其他语言中做到这一点,但我非常局限于Excel,我不知道如何做到这一点

假设我有
产品查找:$B$2=“ps26k417”
,我已经有了从
产品库存中提取信息的
产品描述,
花园门靛蓝/亚麻天然26x26 KE纤维枕头*
,但现在我需要弄清楚如何从材料库存中提取

根据产品描述,我需要从物料清单中抽出两行。。我需要一种基于描述提取信息的方法,在本例中,我需要
417 Garden Gate Indigo/Linen
的行和
554 Linen Natural/S Backed


是否值得在Excel宏中进行如此深入的研究?

根据您需要执行的其他操作,我将为此创建一个结构合理的Access数据库。您需要3个表格:产品、物料和BOM(物料清单)。
BOM将有3个字段:ProductId、MaterialId、Quantity。

只要这样,再加上一个简单的参数查询,您就可以解决您的问题。

如果ProductInventory表中的每个结果都转换为MaterialInventory表上的两个条目,最简单的选择就是使用两个VLOOKUPS公式

如果您想继续使用VBA路线,可能需要以下代码:

Public Sub SearchForMaterial(materials() As String)
    Dim N As Long
    Dim materialsList As Range
    Set materialsList = ' Set to the relevant range

    Dim cell As Range

    Dim output(UBound(materials) - LBound(materials)) As String
    Dim outputCount As Long

    For N = LBound(materials) To UBound(materials)
        For Each cell In materialsList.Cells
            If cell.Value = materialsList(N) Then
                output(outputCount) = cell.Offset(ColumnOffset:= ??)
            End If
        Next cell
    Next N
End Sub

这段代码不是特别有效。你说你有其他语言的经验,所以希望这足以让你开始学习。

我放弃了用Excel和VBA来解决这个问题。我制作了一个PHP脚本,它转换了
产品
材料
工作表中我需要的所有列,将所有这些都放入MySQL数据库,将其作为CSV取出并制作了一个新的电子表格。

产品表是否有唯一的ID? 物料表是否有与产品表相关的外键

如果不是……为什么不是?将比使用文本值搜索更容易、更快


在excel中使用SQL时,请查看此项。如果您有唯一的ID,这应该很容易。

我很想选择访问路径,但遗憾的是,我仅限于Excel。此电子表格所在的系统不具有访问权限。这是我的第一个想法,但是是的。