You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求Excel公式:按Column D值差≥2分组,每组行数可调整

Excel分组公式实现方案

原始数据

Column AColumn BColumn CColumn D
Text1Text1Text1189.21
Text2Text2Text2180.20
Text3Text3Text3236.67
Text4Text4Text4204.23
Text5Text5Text5205.21
Text6Text6Text6209.20

需求

用Excel公式实现数据分组,满足以下规则:

  • 每组默认3行(可自定义行数)
  • 同组内Column D任意两个值的差值≥2
  • 数据不重复,分组方式不限

示例分组

分组1

Column AColumn BColumn CColumn D
Text1Text1Text1189.21
Text2Text2Text2180.20
Text4Text4Text4204.23

分组2

Column AColumn BColumn CColumn D
Text3Text3Text3236.67
Text5Text5Text5205.21
Text6Text6Text6209.20

实现方案

动态数组版本(Excel 365/2021)

在数据旁插入辅助列(比如E列),E2单元格输入以下公式后下拉填充至所有行:

=LET(
    currentVal, D2,
    groupSize, 3,  // 可修改为每组需要的行数
    minDiff, 2,     // 可修改为要求的最小差值
    usedVals, FILTER(D$2:D$7, E$1:E1 <> ""),
    usedGroups, FILTER(E$1:E1, E$1:E1 <> ""),
    availableGroups, UNIQUE(usedGroups),
    validGroups, FILTER(
        availableGroups,
        COUNTIFS(usedGroups, availableGroups) < groupSize,
        MIN(ABS(currentVal - FILTER(usedVals, usedGroups = availableGroups))) >= minDiff
    ),
    IF(COUNTA(validGroups) > 0, INDEX(validGroups, 1), MAX(usedGroups, 0) + 1)
)

公式会自动为每行分配合规的组号,之后通过筛选辅助列的组号即可提取对应分组。

旧版Excel兼容方案

若你的Excel不支持动态数组,可按以下步骤操作:

  1. 先对D列排序(可选,能减少组内冲突概率)
  2. E2单元格输入1
  3. E3单元格输入公式后下拉填充:
=IF(
    AND(COUNTIF(E$1:E2, E2) < 3, MIN(ABS(D3 - D$2:D2)) >= 2),
    E2,
    MAX(E$1:E2) + 1
)

此方案逻辑简洁,适合数据量较小的场景,若出现个别不符合规则的情况可手动调整组号。


内容的提问来源于stack exchange,提问作者AdamW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 15:03:16