繁体   English   中英

使用Excel和VBA查找字符串?

[英]Find in string with Excel and VBA?

我有一个包含一些工作表的电子表格,一个工作表是产品库存,一个工作表是材料库存...

我试图弄清楚如何在另一个工作表中查找产品代码,从产品清单中提取描述,并从材料清单中提取所需的材料。 我知道如何用其他语言来执行此操作,但我仅限于Excel,并且不知道如何执行。

假设我有Product Lookup:$B$2 = "ps26k417" ,我已经从Product Inventory中获取了相关信息,其中包含了产品说明, Garden Gate Indigo/Linen Natural 26x26 KE Fiber Pillow*但现在我需要弄清楚如何拉从材料库存

从该产品描述中,我需要从“物料清单”工作表中拉出两行。.我需要一种基于描述提取信息的方法,在此示例中,我需要417 Garden Gate Indigo/Linen的行和554 Linen Natural/S Backed的行554 Linen Natural/S Backed

甚至值得在Excel宏中进行深入介绍吗?

根据您需要执行的其他操作,我将为此构建一个结构合理的Access数据库。 您需要3个表格:产品,物料和BOM(物料清单)。
BOM将包含3个字段:ProductId,MaterialId,数量。
有了这些,再加上简单的参数查询,就可以解决您的问题。

如果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脚本,该脚本转换了我在“ ProductsMaterials工作表中所需的所有列,将所有内容都放入一个MySQL数据库中,将其全部提取为CSV并创建了一个新的电子表格。

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

如果没有...为什么不呢? 与使用文本值进行搜索相比,这将使事情变得容易和快捷得多。

查看此链接以在excel中使用SQL。 如果您具有唯一ID,应该会很容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM