在电子表格中,电子元件的物料清单按其值列出元件,例如 1R0(代表 1 欧姆)、1k0(代表 1 千欧姆)或 22p(代表 22 皮法拉)、1n0(代表 1 纳法拉)。如何按数字顺序对这种格式的数字进行排序?
之前,未分类:
电阻器
- 1千0
- 1R0
电容器
- 1n0
- 22 页
之后,排序:
电阻器
- 1R0
- 1千0
电容器
- 22 页
- 1n0
答案1
由于所选的缩写集不适合按“Az”字母顺序排列,因此传统的解决方案是包含一个或多个辅助列,这些辅助列包含所需信息,并对这些列(而不是显示的源列)执行实际排序。您还可以隐藏这些辅助列,或将它们放置在远离数据边缘的位置,以减少干扰。
您似乎有一个“用于对话”的值,例如“22”,一个“类型”的值,例如“电阻”或“电容”,以及一个“级别”修饰符,例如“纳米”。所以有三个辅助列。
(您可以在输入数据或进行修改时键入以下所有内容,但以下内容并不复杂,只是乏味,并且可以稍后再完成,作为在此过程中添加的改进。)
第一个可以使用常规字符串函数列表删除对话中使用的值。第二个可以删除级别修饰符,第三个可以删除类型修饰符。您可以使用相应列中的公式删除这些位,然后根据需要对这些结果采取行动。
例如,取出的“p”可以输入到VLOOKUP
修饰符及其单词名称表中。显然,这里讨论的一些值必须稍微更有创意地找出来,但它们看起来相当容易做到。对于级别修饰符,您需要将对话中使用的值乘以适当的 0.000001 或适合级别修饰符的任何值,这样您就有了一个用于排序的“真实”的“Az”值。您可以将现在或以后的这两列合并为一个更大的公式,因为这是您实际需要的。对于这种方法的两列,您需要另一列将它们的结果合并为真正的可排序值。因此,您的三列将变成两列或四列,具体取决于您的方法。不过,还是那句话:“现在或以后”……您现在可以采用简单的四列方法,以后再将其改进为两列。无论哪种方式对您来说都是最好的。
一旦列中填充了公式,您就拥有了进行排序所需的一切,以实现您想要的结果。
如果列中有公式,您可以隐藏它们,因为用户不太需要看到它们。这样看起来更干净,而且他们无法覆盖内容等等。无论如何都要保护这些列中的单元格,这样就没有人会清除前后单元格……以及行和公式单元格。
或者将它们移到边缘,比如说超出边缘 30 列,这样就没有人会真正注意到它们。(他们可能会根据他们看到的内容自行排序,但会遇到一些问题……在数据列区域内可能不会发生这种情况,因为当他们选择要排序的内容时,它将是您已经排序的列,因此您的排序选项应该会出现,他们甚至不会真正注意到他们正在对隐藏列进行排序。)
但是隐藏列的一个巨大“损失”是,你最好把所有可能的缩写都写对,最好不要添加你没有包括的缩写……因为用户不会输入值,然后看到其右侧的一个或多个单元格突然出现错误,而不是显示值。或者显示错误的值,因为你进行了VLOOKUP
近似匹配而不是精确匹配,所以弹出的是“纳米”,而不是欧姆。所以他们无法帮助你维护东西,甚至不会注意到他们最终得到了一些不适合他们的东西。
(您甚至可以将查找表放在他们引用但从未打开的单独电子表格中,这样当他们调用时,您可以编辑该电子表格,将他们的材料添加到表格中,保存它,并告诉他们按下F9
并查看现在是否一切都好起来了。)
有很多选择,有些方法可以先走后跑,随着时间的推移会逐渐改进,但从根本上来说,这些方法很容易理解,也很容易做到。
当然,VBA 才是真正的魔法工具。有了它,您可以利用其更好的功能进行排序,创建所需的排序信息并进行排序,而用户只需单击电子表格中标记为“排序”的便捷按钮即可。但 VBA 绝对是“跑”而不是“走”(以我目前的技能,我不会尝试用它完成这一点),有些组织甚至根本不允许使用它。