Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 基于多个条件查找最接近的匹配项_Excel_Vba_Match_Lookup - Fatal编程技术网

Excel 基于多个条件查找最接近的匹配项

Excel 基于多个条件查找最接近的匹配项,excel,vba,match,lookup,Excel,Vba,Match,Lookup,我已经在VBA上工作了将近一年,并成功地获得了一些令人印象深刻的东西,通常我可以通过在这个网站或其他网站上的一系列搜索找到任何我不确定的东西,但这次我还是一片空白,我想很可能是因为我真的不知道如何正确地构建搜索框架:( 我希望创建一个宏来分析客户的销售历史,然后从我们的畅销书列表中执行“你可能也喜欢”搜索,并返回最接近他们畅销书的匹配项。产品是书籍,由于行业内数十年的书目关注细节,每种产品最多可以有20个类别,我想我不想用这个来找到壁橱里的匹配 我掌握的信息(重要信息) 我希望能够从客户列表中找

我已经在VBA上工作了将近一年,并成功地获得了一些令人印象深刻的东西,通常我可以通过在这个网站或其他网站上的一系列搜索找到任何我不确定的东西,但这次我还是一片空白,我想很可能是因为我真的不知道如何正确地构建搜索框架:(

我希望创建一个宏来分析客户的销售历史,然后从我们的畅销书列表中执行“你可能也喜欢”搜索,并返回最接近他们畅销书的匹配项。产品是书籍,由于行业内数十年的书目关注细节,每种产品最多可以有20个类别,我想我不想用这个来找到壁橱里的匹配

我掌握的信息(重要信息)

我希望能够从客户列表中找到畅销书,在cat参考表中查找该产品的所有匹配类别,找到与这些类别完全匹配的所有结果,并按公司的总销售额列出它们。尽管很可能,随着可能类别的数量增加我不是一个精确的马赫数,所以我想得到最接近该产品的匹配


这有意义吗?请让我知道是否需要更多的信息来帮助-即使只是一个指向某种函数的指针或一段代码,将帮助我在我的道路上,将不胜感激,我只是不知道如何找到一个匹配的整行值…更不知道如何找到一个最接近的匹配,如果没有确切的s、 ..

有趣的问题。没有匹配函数来实现您想要的。相反,您需要首先确定要使用哪种算法/逻辑来确定最接近的书籍。这将需要大量的权衡。以下是我如何做到的(没有VBA):

让我们以以下数据为例:

方法:

  • 将产品信息与整体销售信息相结合,以确定每本书的权重:
  • 确定表1中客户篮子的“平均偏好”。为此:
    • 将400个类别的类别信息添加到篮子中的每个产品中:
    • 所有篮子产品的各类别总和(见上文第6行)
    • 确定重量(见第7行)
  • 将此首选项应用于所有产品,以确定整体适合度:
  • 将每个产品的类别与首选项进行比较:
  • 检查产品是否已在篮子中:
  • 将所有三个因素结合起来,确定每个产品的适合性(通过乘以这些因素),并使用
    rank
    功能对它们进行排名:
  • 最后但并非最不重要的一点是,通过查找检索前X个最高匹配项:

  • 以下是。

    对于此类搜索,您不应该尝试将该项用作键(并在数据库中查找)。您应该使用诸如
    [年范围]
    或十年、
    [流派]
    ar子类型、
    [类似作者]
    在硬编码列表中分组、
    [等]之类的属性
    然后对这些属性进行搜索。根据您的查询结果,您应该按照匹配atrb的数量降序选择相似的项目。.更多属性>更深入的搜索>更准确的结果。基本上不使用1/0值,而是使用ID作为属性。如果需要,我可以写下一个示例。+1另一位r质量员额:)
        Sheet 1 - product id - customer sales quantity 
                         Product id 2 -customer sales quantity
                         Product id 3 -customer sales quantity
                         Etc etc ( usually up to 100)
    
    Sheet 2 - product id - total company sales quantity
                     product id2 - total company sales quantity                                                     product id3 - total company sales quantity
                     Etc etc (Currently over 34000 and growing...)
    
    Sheet 3 -     cat1 cat2 cat3 cat4 cat5 cat6 etc (to cat400) 
      Product id    1       0      1      1      0       0     
    Product id2    0       1      1       0     1       0  
    Product id3     1      0      1      1      0       0