2993554205 发表于 2024-12-17 19:43:45

python排序(类似excel中的排序,根据主关键字升序或降序)

请编写一个房屋信息排序输出程序,对于输入的任意关键字和排序方向,能正确排序输出。
样例数据如下:
[{'标题':'东园小区2室1厅', '面积':52.89, '单价':44054, '总价':2330000},
{'标题':'梦琴湾3室2厅', '面积':131.39, '单价':22833, '总价':3000000},
{'标题':'金盛曼城2室2厅', '面积':88.82, '单价':36591, '总价':3250000}]
样例输入:
面积降序
样例输出:
[{'标题': '梦琴湾3室2厅', '面积': 131.39, '单价': 22833, '总价': 3000000},
{'标题': '金盛曼城2室2厅', '面积': 88.82, '单价': 36591, '总价': 3250000},
{'标题': '东园小区2室1厅', '面积': 52.89, '单价': 44054, '总价': 2330000}]

FishC 发表于 2024-12-17 19:43:50

# 样例数据
houses = [
    {"名称": "房屋A", "面积": 100, "价格": 500},
    {"名称": "房屋B", "面积": 200, "价格": 1500},
    {"名称": "房屋C", "面积": 150, "价格": 1000}
]

# 获取用户输入
key = input("请输入排序关键字(如:面积、价格):")
direction = input("请输入排序方向(升序或降序):")

# 根据用户输入排序
reverse = True if direction == "降序" else False
sorted_houses = sorted(houses, key=lambda x: x, reverse=reverse)

# 输出排序结果
print("排序结果:")
for house in sorted_houses:
    print(house)

您可以将样例数据替换为其他房屋信息,只需确保每个字典中的键与用户输入匹配即可。这段代码会根据用户输入的关键字和方向对房屋信息进行排序并输出结果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

凊风 发表于 2025-9-24 10:16:17

FishC 发表于 2024-12-17 19:43
您可以将样例数据替换为其他房屋信息,只需确保每个字典中的键与用户输入匹配即可。这段代码会根据用户 ...

请问能不能用VB宏实现多个排序条件组合、关键字标注红色?

FishC 发表于 2025-9-24 10:17:14

凊风 发表于 2025-09-24 10:16
FishC 发表于 2024-12-17 19:43
您可以将样例数据替 ...

在 Excel VBA 中,您可以使用宏实现多条件排序和关键字标注红色。以下是一个示例代码,它允许您指定多个排序关键字(每个关键字可独立设置升序或降序),并在排序后将关键字所在的列标注为红色字体。


Sub MultiSortAndHighlight()
    Dim ws As Worksheet
    Set ws = ActiveSheet ' 假设操作当前活动工作表
    Dim rng As Range
    Set rng = ws.Range("A1").CurrentRegion ' 假设数据区域从A1开始连续
   
    ' 清除之前的排序字段
    ws.Sort.SortFields.Clear
   
    ' 示例:设置多个排序条件
    ' 第一关键字:列A(升序)
    ws.Sort.SortFields.Add Key:=rng.Columns(1), Order:=xlAscending
    ' 第二关键字:列B(降序)
    ws.Sort.SortFields.Add Key:=rng.Columns(2), Order:=xlDescending
    ' 可根据需要添加更多关键字
   
    ' 应用排序
    With ws.Sort
      .SetRange rng
      .Header = xlYes ' 假设第一行是标题
      .Apply
    End With
   
    ' 标注关键字列为红色(例如,将排序关键字所在的列A和列B的字体设为红色)
    rng.Columns(1).Font.Color = vbRed ' 列A标红
    rng.Columns(2).Font.Color = vbRed ' 列B标红
    ' 注意:如果数据区域有标题行,上述代码会将标题也标红;若只需标红数据部分,可调整范围,例如 rng.Columns(1).Offset(1, 0).Resize(rng.Rows.Count - 1, 1)
End Sub


说明:
- 此宏首先对数据区域进行多条件排序(示例中按列A升序、列B降序)。
- 排序后,将关键字所在的列(如列A和列B)的字体颜色设置为红色。
- 您可以根据实际需求修改排序关键字和标红列(通过调整 Key:=rng.Columns(1) 中的列索引和 Font.Color 部分)。

注意事项:
- 请确保数据区域包含标题行,且代码中的 Header = xlYes 与之匹配。
- 如果数据区域不连续,可能需要手动设置 rng 范围。
- 运行宏前,建议备份数据,以免排序或格式更改导致意外结果。

如需更动态的输入(例如通过用户表单选择关键字和排序方向),可以进一步扩展宏,但上述代码提供了基础框架。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: python排序(类似excel中的排序,根据主关键字升序或降序)