繁体   English   中英

获取单元格中逗号分隔值的最大值

[英]Get maximum of comma-separated values in a cell

在一个单元格中,我有逗号分隔的数字。 我想要这些数字的最大值。

例如:A1 = "2,5,1,4"

B1 中返回值 5 的公式应该是什么?

假设A1包含一个1999之间的正整数列表,用逗号分隔但没有空格,您可以使用此公式找到存在的最高数字

=MATCH(1000,INDEX(FIND(","&ROW(INDIRECT("1:999"))&",",","&A1&","),0))

搜索 1 到 999 之间的所有数字,然后MATCH找到最后一个 (MAX) 的“位置”,因为我们从 1 开始,因此与数字本身相同

这适用于 A1 中任意数量的数字,任何顺序,只要它们采用指定的格式

你可以在这里使用 VBA 函数:

Public Function MAXSPLIT(ByVal Text As String, ByVal Delimiter As String) As Double
    Dim TextArray() As String
    TextArray = Split(Text, Delimiter)
    Dim ValueArray() As Double
    ReDim Preserve ValueArray(UBound(TextArray))
    For I = LBound(TextArray) To UBound(TextArray)
        ValueArray(I) = CDbl(TextArray(I))
    Next
    ' You can use any other function here: Average, Min etc.
    MAXSPLIT = WorksheetFunction.Max(ValueArray)
End Function

适用于任意数量的值和任何分隔符。 用法(您指定字符串值和分隔符):

=MAXSPLIT("2,5,6,7,8.1,3.254",",")

您可以使用逗号作为分隔符解析数据,然后取生成的单元格对的最大值,或者您可以应用如下公式:

=MAX(1*LEFT(A1,FIND(",",A1)-1),1*MID(A1,FIND(",",A1)+1,LEN(A1)))

不幸的是,Excel 中没有内置的SPLIT函数来使用给定的分隔符拆分字符串,但是您可以为 VBA 的Split函数编写一个快速包装器:

Public Function SplitXL(ByVal s As String, Optional delim As String = " ") As String()
    SplitXL = Split(s, delim)
End Function

然后可以在 Excel 公式中使用。 请注意,它返回一个字符串数组; 要达到最大值,首先需要使用VALUE函数将这些字符串解析为数字。 这给出了MAX可以操作的数字数组。

您可以使用此数组公式获得所需的结果

=MAX(VALUE(SplitXL(A1,",")))

与任何其他数组公式一样,必须使用Ctrl Shift Enter 输入

在此处输入图片说明

=MAX(拆分(A1,“,”))

来自 csv 字符串的最大值:

来自 csv 字符串的最大值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM