Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 用于提取特定单元格数据的公式逻辑_Excel_Excel Formula - Fatal编程技术网

Excel 用于提取特定单元格数据的公式逻辑

Excel 用于提取特定单元格数据的公式逻辑,excel,excel-formula,Excel,Excel Formula,用于从样本数据中提取第一个数字,而不是第二个数字 (2400万UNLTD+INS 30GB,347英镑+30英镑S6) 在Stackoverflow问题中使用了以下数组公式 {=MID(A1,FIND("£",A1),MIN(IF(ISERROR(MID(MID(A1,FIND("£",A1)+1,999),ROW($1:$999),1)+0),ROW($1:$999),999)))} 我试图分析下图所示的公式。我不能理解这个部分的逻辑 MIN(IF(ISERROR(MID(MID(A1

用于从样本数据中提取第一个数字,而不是第二个数字

(2400万UNLTD+INS 30GB,347英镑+30英镑S6)

在Stackoverflow问题中使用了以下数组公式

   {=MID(A1,FIND("£",A1),MIN(IF(ISERROR(MID(MID(A1,FIND("£",A1)+1,999),ROW($1:$999),1)+0),ROW($1:$999),999)))}
我试图分析下图所示的公式。我不能理解这个部分的逻辑

MIN(IF(ISERROR(MID(MID(A1,FIND("£",A1)+1,999),ROW($1:$999),1)+0),ROW($1:$999),999))
至于它是如何导致数字为4的。要求详细说明配方的这一部分,以澄清该配方中各种成分的作用


尝试以下标准(非数组)公式:

首先,内部的
REPLACE(A2,1,FIND(“£”,A2),”)
删除第一个符号之前的所有内容,然后应用相同的逻辑删除修改文本中从第一个+到最后的所有内容。
--
将看起来像数字的文本转换为实际数字

您提供的数组公式使用更复杂的逻辑

  • FIND(“£”,A2)+1
    查找第一个符号后的第一个数字的起点。e、 g.第一个字符是第20个字符,因此返回21
  • MID(A2,FIND(“£”,A2)+1999)
    提取第一个£符号后面的文本。文本可能看起来像以数字开头,但它是伪装成数字的文本。e、 g.347英镑+30英镑
  • 在数组公式中,
    行($1:$999)
    作为一个从1到999的数字序列进行处理,每个计算周期递增1
  • MID(MID(A1,FIND(“,”,A1)+1999),ROW($1:$999),1)+0)
    返回一个文本值数组,每个值的长度为1个字符,在文本中的位置比前一个值深1个。e、 g.
    3
    4
    7
    +
    ,等等
  • +0
    用于尝试将这些文本片段转换为数字。如果一段文本无法转换为真数值,IFERROR函数将返回TRUE。第一个不能转换为真数字的是第四个,例如
    +
  • IF
    在第四个位置捕捉到TRUE,并从第二行
    返回4($1:$999)
    。它已返回位置1、2和3的
    999
    。e、 g.999、999、999、4、5等
  • MIN
    捕捉作为数组返回的这些数字中最小的一个。这就是4的来源。e、 g.
    999、999、999、4、5、999,…
  • 通过将所有999更改为9,然后使用命令,您可以自己看到这一点。更改为9的原因很重要,因为返回的数字数组看起来像1、2、3、4、5、6、7、8、9,这不会像1、2、3、4、5、6、7、8、9、10、11、12、13、14……那样严重混淆结果。。。998999



    这显示了计算过程中几个步骤的公式。请注意,4将返回到。

    感谢您的及时回复和建议。我非常尊重你的知识和经验。如果您能澄清我理解数组公式的最小部分的困难,我将不胜感激,因为它也经常出现在各种情况下。这一部分需要更长的时间来编写和解释。我希望我上面提供的内容足够了。我非常感谢你们为我澄清了公式中的各个步骤及其相关逻辑。现在事情对我来说是非常清楚的。逻辑解释中的小错误并不影响上面纠正的结果。
    =--REPLACE(REPLACE(A2, 1, FIND("£", A2), ""), FIND("+", REPLACE(A2, 1, FIND("£", A2), "")), LEN(A2), "")