根据多个标准find最接近的匹配

我已经在工作了近一年的VBA,并设法拉一些相当令人印象深刻的事情,通常我可以find任何我不知道在这个网站上或其他一系列的search,但这次我已经出现空白,我猜这是最有可能的,因为我不知道如何框架search正确:(

我打算创build一个分析客户销售历史的macros,然后从我们的畅销书列表中进行“您可能还喜欢”的search,并返回与其畅销书最接近的匹配项。 该产品是书籍,由于数十年的书目注意到行业内的细节每个产品可以有多达20个类别,我想用这个来find衣柜的比赛。

我有的信息(重要的位)

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 

我希望能够从客户列表中find畅销书,在猫参考表上查找该产品的所有匹配类别,find与这些类别完全匹配的所有结果,并按公司总销售额列出值。 尽pipe可能的类别数量很可能没有确切的马赫数,所以我希望能得到最接近的匹配的产品…..

那有意义吗? 请让我知道是否需要更多的信息来帮助 – 即使只是一个指向某种function或代码片段,将帮助我在我的方式,将不胜感激,我只是不知道如何find一个匹配整行的价值….甚至更less的想法如何find一个最接近的匹配,如果没有exacts …

有趣的问题。 没有匹配function来实现你想要的。 相反,您需要先弄清楚您想使用哪种algorithm/逻辑来确定最近的书籍。 这将需要大量的称量。 下面是我怎么做(没有VBA):

我们以下面的数据为例:

在这里输入图像说明

做法:

  1. 结合产品信息和整体销售信息,为每本书增加一个权重: 在这里输入图像说明
  2. 确定表1中的顾客篮子的“平均偏好”。 为了做到这一点:
    • 将400个类别的类别信息添加到购物篮中的每个产品: 在这里输入图像说明
      1. 将所有篮子产品的每个类别相加(参见上面的第6行)
      2. 确定重量(见第7行)。
  3. 将此偏好应用于所有产品以确定总体适合度:
    1. 比较每个产品的类别与偏好: 在这里输入图像说明
    2. 检查产品是否已经在篮子里了: 在这里输入图像说明
    3. 结合所有三个因素来确定每个产品的适合度(通过乘以因子) – 并使用RANK函数对它们sorting: 在这里输入图像说明
  4. 最后但并非最不重要的是,通过查找检索前X个最高匹配项: 在这里输入图像说明

这是示例文件 。