没有一种生活是可惜的,也没有一种生活是不值得的,所有的生活都充满了财富,只不过看你开采还是没有开采

序
哪有程序员不会Excel?快速实现工业CNC切割零件WPS表格排序(字母+ 数字类型)
按角度来说是要写一个Py脚本自动化来实现该功能。但限制于公司的系统是wind7,vscode也只能安装旧版本,而且还要安装pandas库;于是本文提供直接手动操作excel,和py代码
前提
下发的表格清单格式如下图,我们理想效果是零件号他按字母按A-Z排序,数字从小到大升序;而困难的是零件号组成结构复杂

操作步骤
插入列
在原零件号在 B 列,在 C 列和 D 列插入空白列,分别用于存放零件号的字母部分和数字部分

提取字母
在 C2 单元格输入公式
=LEFT(B2,MIN(FIND({0,1,2,3,4,5,6,7,8,9},B2&"0123456789"))-1)
接着,将鼠标指针移至该单元格右下角,当指针变为黑色 “十” 字形状时,按住鼠标左键向下拖动,应用此公式到整列

提取数字
在 D2 单元格输入公式
=VALUE(MID(B2,LEN(C2)+1,LEN(B2)))
同样地,使用填充柄向下拖动,将公式应用到整列

排序
选中数据,在菜单栏中,找到 “数据” 选项卡,点击 “排序”-“自定义排序” 按钮,会弹出 “排序” 对话框
在 “主要关键字” 下拉框中选择字母部分所在的列(这里是 C 列对应的列名),排序依据选择 “数值”,次序选择 “升序”
点击 “添加条件”,在 “次要关键字” 下拉框中选择数字部分所在的列(这里是 D 列对应的列名),排序依据选择 “数值”,次序选择 “升序”

最后
这是限制于电脑环境,当然 这可以使用py写脚本
import pandas as pd
# 读取文件
excel_file = pd.ExcelFile('/mnt/工作簿1.xlsx')
# 获取指定工作表中的数据
df = excel_file.parse('Sheet1')
# 提取字母部分
def extract_letters(part_number):
import re
match = re.match(r'[A-Za-z]+', part_number)
return match.group() if match else ''
# 提取数字部分
def extract_numbers(part_number):
import re
match = re.search(r'\d+', part_number)
return int(match.group()) if match else 0
df['字母部分'] = df['零件号'].apply(extract_letters)
df['数字部分'] = df['零件号'].apply(extract_numbers)
# 先按字母部分升序排序,再按数字部分升序排序
df_sorted = df.sort_values(by=['字母部分', '数字部分'])
# 删除提取的辅助列
df_sorted = df_sorted.drop(columns=['字母部分', '数字部分'])
# 将结果保存为 Excel 文件
file_path = '/mnt/工作簿1_排序后.xlsx'
df_sorted.to_excel(file_path, index=False)