如何按单元格内性别字段排序单列分隔数据(非首字符排序)
问题描述
现有单列数据,每个单元格包含姓名和性别,以句点分隔,原始数据如下:
Juma. Male Ashura. Female Asha. Female Zachariah. Male John. Male Zainabu. Female
需要按性别排序,要求所有女性先按姓名字母顺序排列,之后是按姓名字母顺序排列的男性,预期结果如下:
Asha Female Ashura Female Zainabu Female John Male Juma Male Zachariah Male
实现方法
方法一:Excel可视化操作
- 拆分数据列:选中目标数据列,点击「数据」选项卡的「分列」功能,选择「分隔符号」模式,勾选「其他」并输入
.,完成后姓名和性别会被拆分为两列(记得手动清理性别列开头的空格)。 - 设置多条件排序:选中所有数据,点击「数据」选项卡的「排序」按钮:
- 第一排序规则:选择性别列,排序依据为「单元格值」,次序选择「自定义序列」,输入
Female,Male并保存,以此作为排序优先级。 - 第二排序规则:选择姓名列,排序依据为「单元格值」,次序设为「升序」。
- 第一排序规则:选择性别列,排序依据为「单元格值」,次序选择「自定义序列」,输入
- 合并列(可选):如果需要恢复单列格式,用公式
=A2&" "&B2(根据实际列号调整)合并姓名和性别列即可。
方法二:Python脚本批量处理
如果需要代码自动化处理,可使用以下脚本:
# 原始数据 raw_data = [ " Juma. Male", " Ashura. Female", " Asha. Female", " Zachariah. Male", " John. Male", " Zainabu. Female" ] # 拆分并清理数据 processed_list = [] for item in raw_data: clean_item = item.strip() name, gender = clean_item.split('. ') processed_list.append((name, gender)) # 按规则排序:Female优先,再按姓名升序 sorted_result = sorted(processed_list, key=lambda x: (x[1] != 'Female', x[0])) # 输出结果 for name, gender in sorted_result: print(f"{name}\t{gender}")
运行脚本后会直接输出符合要求的排序结果。
内容的提问来源于stack exchange,提问作者secondson chanel
相关产品推荐
相关产品推荐

