如何比较具有某些值的单元格数组,如果找到至少1个值,则返回true

时间:2020-02-11 17:59:02

标签: arrays excel compare

我正在接受工作面试,我进行了一项测试,将包含数字字符串的某些单元格与其他4个数字进行比较,如果这4个数字中至少有一个在字符串显示中,则为1或2,如果为假。

我尝试了一些公式,例如比较2个字符串或每个数字,但无法弄清楚。他们希望成为Col2中每个单元格的公式。

练习就像:如果Col1包含数字9、10、11和12中的至少一个,则在Col2中显示1(如果为true)或2(如果为false)

Col1

A2 = 9,10,11,22,33

A3 = 10,34,55

A4 = 40、78、41、26

为了清楚起见,我制作了一个Google表格:https://docs.google.com/spreadsheets/d/1GYnCQfjM2N-yLLQgHf2QRdaSLl14VB2liAJmv_SUXpE/edit?usp=sharing

Col1中的每一行都是一个字符串,其中包含从调查中选择的选项,并且如果其中任何一个是9、10、11、12,则Col2应该包含True或False或在这种情况下为1或2。 您可以将字符串中的数字视为所选选项:option1,option2等。

我得到错误的答案,因为包含9的数字被视为9。

2 个答案:

答案 0 :(得分:0)

这未经测试,但类似的东西应该可以工作。

sub test_ints ()
dim cl as range
dim ary as integer()
dim ans as boolean

set cl = rang(A2:A4)

for each i in cl
ary() = split(i.value)
 for j = 1 to UBOUND(len(ary))
   if ary(j) = 9 OR ary(j) = 10 OR ary(j) = 11 OR ary(j) = 12 then
     ans = true
      exit sub
   else
     ans = false
   end if
  next j
next i
end sub

答案 1 :(得分:0)

这是一个适用于Excel 2013+的公式。

=IF(COUNT(FILTERXML("<t><s>" & SUBSTITUTE(SUBSTITUTE($A1," ",""),",","</s><s>") & "</s></t>","//s[.>=9 and .<= 12]"))>0,1,2)

它在逗号上分割值,并仅返回那些符合条件的值。

如果您使用的是早期版本的Excel,则需要使用其他公式:

=IF(OR(ISNUMBER(FIND("," & {"9","10","11","12"} & ",",SUBSTITUTE(","&A1&","," ","")))),1,2)

后一个公式

  • 在字符串前加上逗号,以确保每个条目都分开。
  • 通过删除所有空格“清除”字符串
  • 使用数组常量(还带有逗号前后)来查找不同的内容
  • 使用ISNUMBER函数查看是否找到匹配项

enter image description here

相关问题