Excel 混合数字/字母值的最小函数

Excel 混合数字/字母值的最小函数,excel,excel-formula,excel-2013,Excel,Excel Formula,Excel 2013,我有一个包含学生记录的表格,可以识别他们注册的几个方面,包括他们的id、注册年份、注册学期、学生类型等 下面的公式在表中的一列中,完全可以根据学生的id和类型来确定学生的最低学年(以及最低学年的最低学期)。但它只有在术语值为数值时才能完美工作。有些术语是字母/数字组合,如“A1”、“A2”、“A3”、“J1”、“J2”、“J3”、“M1”、“M2”、“M3”,对于这些行,代码返回一个#值!错误 通过一些研究,我发现了一个索引/匹配公式:=index([trm_cde]、match(MIN(co

我有一个包含学生记录的表格,可以识别他们注册的几个方面,包括他们的id、注册年份、注册学期、学生类型等

下面的公式在表中的一列中,完全可以根据学生的id和类型来确定学生的最低学年(以及最低学年的最低学期)。但它只有在术语值为数值时才能完美工作。有些术语是字母/数字组合,如“A1”、“A2”、“A3”、“J1”、“J2”、“J3”、“M1”、“M2”、“M3”,对于这些行,代码返回一个#值!错误

通过一些研究,我发现了一个索引/匹配公式:
=index([trm_cde]、match(MIN(code([trm_cde]))、code([trm_cde])、0))
,它将返回表中所有记录的术语的最小值,但经过多次尝试后,我无法找出如何将其合并到公式中,我需要通过id、类型、,和最短年份标准。

使用以下内容:

=INDEX([yr_cde],MATCH(MIN(IF([@[id_num]]&[@[TYPE CONSOLIDATION]]=[id_num]&[TYPE CONSOLIDATION],[yr_cde])),[yr_cde],0))&"("&INDEX([trm_cde],MATCH(MIN(IF([@[id_num]]&[@[TYPE CONSOLIDATION]]=[id_num]&[TYPE CONSOLIDATION],[yr_cde])),[yr_cde],0))&")"
这是一个数组公式,因此需要使用Ctrl-Shift-Enter确认

刚刚意识到,只有当表格按if_num、yr_code、trm_cde排序时,这才有效


编辑2:

无论排序顺序如何,此公式都有效:

=INDEX([yr_cde],MATCH(MIN(IF([id_num]&[TYPE CONSOLIDATION]=[@[id_num]]&[@[TYPE CONSOLIDATION]],[yr_cde]*1000+(CODE([trm_cde])*10)+RIGHT([trm_cde],1))),[yr_cde]*1000+(CODE([trm_cde])*10)+RIGHT([trm_cde],1),0))&"("&INDEX([trm_cde],MATCH(MIN(IF([id_num]&[TYPE CONSOLIDATION]=[@[id_num]]&[@[TYPE CONSOLIDATION]],[yr_cde]*1000+(CODE([trm_cde])*10)+RIGHT([trm_cde],1))),[yr_cde]*1000+(CODE([trm_cde])*10)+RIGHT([trm_cde],1),0))&")"
这是一个数组公式,因此需要使用Ctrl-Shift-Enter确认它。请使用以下命令:

=INDEX([yr_cde],MATCH(MIN(IF([@[id_num]]&[@[TYPE CONSOLIDATION]]=[id_num]&[TYPE CONSOLIDATION],[yr_cde])),[yr_cde],0))&"("&INDEX([trm_cde],MATCH(MIN(IF([@[id_num]]&[@[TYPE CONSOLIDATION]]=[id_num]&[TYPE CONSOLIDATION],[yr_cde])),[yr_cde],0))&")"
这是一个数组公式,因此需要使用Ctrl-Shift-Enter确认

刚刚意识到,只有当表格按if_num、yr_code、trm_cde排序时,这才有效


编辑2:

无论排序顺序如何,此公式都有效:

=INDEX([yr_cde],MATCH(MIN(IF([id_num]&[TYPE CONSOLIDATION]=[@[id_num]]&[@[TYPE CONSOLIDATION]],[yr_cde]*1000+(CODE([trm_cde])*10)+RIGHT([trm_cde],1))),[yr_cde]*1000+(CODE([trm_cde])*10)+RIGHT([trm_cde],1),0))&"("&INDEX([trm_cde],MATCH(MIN(IF([id_num]&[TYPE CONSOLIDATION]=[@[id_num]]&[@[TYPE CONSOLIDATION]],[yr_cde]*1000+(CODE([trm_cde])*10)+RIGHT([trm_cde],1))),[yr_cde]*1000+(CODE([trm_cde])*10)+RIGHT([trm_cde],1),0))&")"

这是一个数组公式,因此需要使用Ctrl-Shift-Enter确认。我相信您可能误解了该公式的用途。其预期用途是将区域数字格式(例如2.500,27)中的文本-看起来像-数字-转换为可进行数学处理的原始数字格式。其目的不是试图将严格的文本值(如J1)解释为数值。这是您在trm\u cde列中出错的原因。由于无需进行区域翻译,因此无需在yr_cde列中使用NUMBERVALUE。在yr_cde列中简单地有代表年份的真实数字会更有效;图像中明显的错误通知以及值的左对齐似乎表明它们是伪装成数字的文本

在下面的示例数据中,我将yr\u cde列强制转换为看起来像数字年份的文本值(通过它们的错误符号和左对齐可以明显看出),并将trm\u cde列在真数字和真文本之间分开

在每个ID和类型的最早年份/期限列的第一个数据行中(在我的示例图像中为F3),使用此数组公式

=IFERROR(
  LEFT(AGGREGATE(15, 7, IF(ISTEXT([trm_cde]), [yr_cde]&MID([trm_cde], 2, 9), [yr_cde]&[trm_cde])/(([id_num]=[@[id_num]])*([type consoldiation]=[@[type consoldiation]])), 1), 4)&
  " ("&IF(ISTEXT([@[trm_cde]]), LEFT([@[trm_cde]], 1), "")&
  MID(AGGREGATE(15, 7, IF(ISTEXT([trm_cde]), [yr_cde]&
  MID([trm_cde], 2, 9), [yr_cde]&[trm_cde])/(([id_num]=[@[id_num]])*([type consoldiation]=[@[type consoldiation]])), 1), 5, 9)
  &")", "")
我已经使用了确定est组合值。您还应该能够通过调整k参数返回第二个或第三个最低值(请参见示例图像中的G列)。检查链接文档中的其他选项


文本和数字组合的最小值


⑨Excel 2013中引入了。它在早期版本中不可用

²数组公式需要使用Ctrl+Shift+Enter键完成↵. 正确输入第一个单元格后,可以像任何其他公式一样填充或向下或向右复制它们。尝试将整列引用减少到更接近实际数据范围的范围。数组公式以对数方式消耗计算周期,因此最好将参考范围缩小到最小值。有关更多信息,请参阅


³使用Excel 2010引入。早期版本中没有此功能。

我相信您可能误解了此功能的用途。其预期用途是将区域数字格式(例如2.500,27)中的文本-看起来像-数字-转换为可进行数学处理的原始数字格式。其目的不是试图将严格的文本值(如J1)解释为数值。这是您在trm\u cde列中出错的原因。由于无需进行区域翻译,因此无需在yr_cde列中使用NUMBERVALUE。在yr_cde列中简单地有代表年份的真实数字会更有效;图像中明显的错误通知以及值的左对齐似乎表明它们是伪装成数字的文本

在下面的示例数据中,我将yr\u cde列强制转换为看起来像数字年份的文本值(通过它们的错误符号和左对齐可以明显看出),并将trm\u cde列在真数字和真文本之间分开

在每个ID和类型的最早年份/期限列的第一个数据行中(在我的示例图像中为F3),使用此数组公式

=IFERROR(
  LEFT(AGGREGATE(15, 7, IF(ISTEXT([trm_cde]), [yr_cde]&MID([trm_cde], 2, 9), [yr_cde]&[trm_cde])/(([id_num]=[@[id_num]])*([type consoldiation]=[@[type consoldiation]])), 1), 4)&
  " ("&IF(ISTEXT([@[trm_cde]]), LEFT([@[trm_cde]], 1), "")&
  MID(AGGREGATE(15, 7, IF(ISTEXT([trm_cde]), [yr_cde]&
  MID([trm_cde], 2, 9), [yr_cde]&[trm_cde])/(([id_num]=[@[id_num]])*([type consoldiation]=[@[type consoldiation]])), 1), 5, 9)
  &")", "")
我已经使用了确定est组合值。您还应该能够通过调整k参数返回第二个或第三个最低值(请参见示例图像中的G列)。检查链接文档中的其他选项


文本和数字组合的最小值


⑨Excel 2013中引入了。它在早期版本中不可用

²数组公式需要使用Ctrl+Shift+Enter键完成↵. 正确输入第一个单元格后,可以像任何其他公式一样填充或向下或向右复制它们。尝试将整列引用减少到更接近实际数据范围的范围。数组公式以对数方式消耗计算周期,因此最好将参考范围缩小到最小值。有关更多信息,请参阅