编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

列出 Excel 所有单元格的排列组合,换成计算机的思考方式就简单了

wxchong 2024-07-22 22:32:50 开源技术 51 ℃ 0 评论

今天遇到一个比较有意思的求助:公司本轮推广活动中有好几个 SKU,如何列出这些 SKU 的所有排列组合?


刚开始我也想了一会,但是当我开始列出排列组合的时候,那一堆 0101 让我豁然开朗,哈哈,这不就是二进制吗?大学一开始就讲的底层知识。


案例:


下图 1 是本次促销的几个 SKU,请列出所有可能的购买组合。


效果如下图 2 所示。


解决方案:


1. 复制 A2:A6 区域 --> 选中 C1 单元格


2. 选择菜单栏的“开始”-->“粘贴”-->“选择性粘贴”


3. 在弹出的对话框中勾选“转置”--> 点击“确定”


如果纯人工排列组合的话,可以这样标识:在卖出的 SKU 下方写 1,没有卖出的写 0。


为啥我觉得很眼熟?这不就是二进制数据的表达方式吗?


想穿了这层,接下来的一切就变得很容易了。我列一个二进制顺序列,然后再将其中的 1 替换为 SKU 的名称不就好了吗?


4. 在 H2 单元格内输入以下公式 --> 下拉直至单元格结果为 1111 为止:

=DEC2BIN(ROW(A1))


公式释义:

  • DEC2BIN 函数的作用是将十进制转换为二进制;
  • ROW(A1):提取 A1 单元格的行号,随着公式下拉,行号会以步长为 1 顺序递增,也就是产生一列十进制顺序序列


有关 DEC2BIN 函数的详解,请参阅 一大波 Excel 进制转换函数来袭,二、八、十、十六进制互转


5. 选中 H 列数据表的任意单元格 --> 选择菜单栏的“数据”-->“从表格”


6. 在弹出的对话框中点击“确定”


数据表已上传至 Power Query。


7. 选择菜单栏的“添加列”-->“自定义列”


8. 在弹出的对话框的“自定义列公式”区域输入以下公式 --> 点击“确定”:

=Text.PadStart(Text.From([二进制]),4,"0")


  • Text.PadStart 的作用是在单元格内容的前面补位;
  • 参数“4”表示不足 4 位补足 4 位,"0" 表示用 0 补位。


9. 选中“自定义”列 --> 选择菜单栏的“主页”-->“拆分列”-->“按字符数”


10. 在弹出的对话框中按以下方式设置 --> 点击“确定”:

  • 字符数:输入“1”
  • 拆分:选择“重复”


11. 将第一列删除


12. 选中所有列 --> 选择菜单栏的“主页”--> 将数据类型改为“文本”


13. 选中“自定义.1”列 --> 选择菜单栏的“主页”-->“替换值”


14. 在弹出的对话框中按以下方式设置 --> 点击“确定”:

  • 要查找的值:输入“1”
  • 替换为:输入“鼠标”


15. 用同样的方式将其他列的 1 值分别替换为“键盘”、“显示器”、“音响”


16. 选中所有列 --> 将“0”替换为空值


17. 保持选中所有列 --> 选择菜单栏的“转换”-->“合并列”


18. 在弹出的对话框中按以下方式设置 --> 点击“确定”:

  • 分隔符:选择“空格”
  • 新列名:输入所需的列名


19. 选择菜单栏的“转换”-->“格式”-->“修复”


20. 选择菜单栏的“主页”-->“关闭并上载”-->“关闭并上载至”


21. 在弹出的对话框中选择“现有工作表”及需要上传到的位置 --> 点击“加载”


所有的排列组合都上传到 J 列的表中了。


很多同学会觉得 Excel 单个案例讲解有些碎片化,初学者未必能完全理解和掌握。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解 Excel 的各个知识点。

现在终于有了,以下专栏,从最基础的操作和概念讲起,用生动、有趣的案例带大家逐一掌握 Excel 的操作技巧、快捷键大全、函数公式、数据透视表、图表、打印技巧等……学完全本,你也能成为 Excel 高手。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表