我目前需要一个 Excel 公式或方法来进行这种简单的优化,以按受欢迎程度对项目进行排序。
语境:
当然,图片是自上而下的视图,每个方块代表我们销售的产品,颜色代表受欢迎程度,两列是因为这是一条小巷。受欢迎的商品必须放在顶部,因为它们离包装机最近,如果离包装机近,移动速度会快得多,而不受欢迎的商品不经常发货,应该离包装机远一点。受欢迎程度每天都在变化。
目前,我打印出(图像左侧)并手动对每个项目进行排序并移动到顶部,但这是一个繁琐的过程,因为这是一个相当繁忙的仓库,所以移动需要时间,所以我只将最受欢迎的两种产品移动到顶部。
问题:
所以我想制作一个 Excel 表来告诉我移动项目[红色的]从C1 至 A1, 和D2 至 A2,来自 [ORANGE]F1 至 B1, 和F2 至 B2等等...我有一列 A 用于表示产品代码(基本上是颜色),B 用于表示位置(比如图中的 A1、A2 等),C 表示受欢迎程度(颜色,也就是预计今天售出的数量),D 表示库存余额(不是必需的,但可以添加以方便查看)-
我目前的解决方案是复制文章、位置和受欢迎程度,然后使用 Excel 中的 AZ 排序功能按受欢迎程度排序,这样可以得到我想要的顺序,但之后我必须手动写入移动到,而且新的排序副本必须显示“移动自”,因为它显示了最受欢迎商品的位置,但我想将该热门商品移动到第一个位置。而且仓库很大,有 500 多种产品,因此手动完成所有操作并计算每条巷道非常繁琐。
我可能解释得不好,但请耐心等待。
以下是编辑后的数据示例:
笔记:图像不是按比例缩放的,并且颜色应该占用相同的空间,因此请忽略这一点并假设它们只是大小相同的单元格。
答案1
本质上,您想计算每个小巷(过道)内每种产品的排名。
我在 A、B 和 C 列中创建了一些虚拟数据。
在 D 列中,我提取了当前位置中指示产品位于哪个过道的部分。在我的数据中,我使用了此公式,但您可能需要根据位置代码的结构略有不同:
=LEFT(B6,1)
在 E 列中,我提取了当前位置的部分,该部分指示该产品当前在过道中的哪个位置。实际上,我意识到这一步并不是绝对必要的,所以你可以根据需要跳过它,但它可能有助于进行比较。
=INT(MID(B6,2,LEN(B6)))
MID 将从位置 2(即字母之后)开始提取一些文本,一直到位置代码的末尾。INT 会将其转换为数字。
F 是重要的一列,我们在这里计算受欢迎程度的排名之内每个过道。
=SUMPRODUCT(($D$6:$D$25=D6)*(C6<$C$6:$C$25))+1
现在我已经知道了过道中的所需位置,我可以在 G 列中按照与当前位置相同的格式重建所需位置。
我确信您的解决方案会略有不同,因为您的位置代码的结构将定义您需要如何提取过道指示器(这对于计算排名很重要),但我希望您能够从中推断出解决您的问题。
编辑1:
由于您提到位置代码 A11-12C 中的过道将是 A11,因此您可能希望从该文本中提取过道作为连字符之前的所有内容。为此,此公式应该可以做到:
=LEFT(I6,FIND("-",I6,1)-1)
编辑2:
因此,根据您对位置代码的描述,这应该可以解决问题:
在 D 列中,提取过道指示符:
=LEFT(B8,3)
E 列如上所述(SUMPRODUCT)。
由于在将位置从 11 增加到 12 再增加到 13 等之前,您有一个 ABC 模式,因此您需要区分这些组,然后区分这些组内的位置。这就是 F 列和 G 列的用途。
F 为每组三个位置分配一个数字,从 rank=1 开始并从那里继续:
=ROUNDUP(E8/3,0)
G 在每个组内分配重复的 1,2,3:
=MOD(E8-1,3)+1
为了将每组中的 1、2、3 位置转换回 A、B、C,我在上图的左上角创建了一个小型查找表。这样我就可以使用 VLOOKUP:
=D8&"-"&10+ROUNDUP(E8/3,0)&VLOOKUP(MOD(E8-1,3)+1,$A$2:$B$4,2,FALSE)
您可以通过适当嵌套函数来消除一些中间列。