2012-11-21 68 views
2

我试图设置两个系统之间的错误检查,并需要比较不同格式的星期数。一个系统以文本格式生成周编号,例如“8-15, 18, 31-32”,另一个系统生成离散值。我如何看待一个数值如16是否落在如上所述的多个范围内?Excel:搜索单元格内多个数组内的值

这是一个更大问题的一部分,我正在检查一个系统中的参考编号,日期,时间和星期编号(例如XXX111 Weds 9:00 9)与另一个系统的输出(例如XXX111 Wed 9:00 7:11, 13, 16, 52-63 or XXX111 Thu 9:00 5, 6, 11-16)的输出。尽管大量的搜索我已经打到了上面的墙,所以任何帮助将不胜感激。

如果可能,我宁可不要使用VBA。预先感谢您的智慧。

回答

0

假设:

  1. 7:117-11
  2. 6353
  3. 一个数字不是范围的一部分(例如18)是不成问题的
  4. 范围是在文本格式

我希望以下帮助或至少是“一个在正确的方向步骤”:

解析组件

例如,对于8-15, 18, 31-32,粘贴到一个小区(比如A1)和数据>数据工具 - 文本到列>分隔符>下一步>勾选逗号,空格和处理连续分隔符为一>下一步>按需选择列>为每个选择文本>完成

可能更容易处理单列所以选择数据,复制>选择A2>选择性粘贴>移调>确定并删除Row1的内容。

乙添加搜索值(16)插入B1

C复制下面的公式为B2和复制下来的要求:

=AND(B$1>=VALUE(LEFT($A2,SEARCH("-",$A2)-1)),B$1<=VALUE(RIGHT($A2,LEN($A2)-SEARCH("-",$A2)))))

结果应该是TRUE其中搜索值位于离散范围的范围内或范围内:

SO13491293 example

公式使用连字符'识别'离散范围。 SEARCH会查找它所在的位置(因为它的任何一边都可能有一个或两个字符)。 LEFT和RIGHT用于下限和上限(在RIGHT的情况下与LEN一起用于确定上限是一个还是两个字符)。 VALUE被要求将文本转换成可以等同于搜索值的东西。并且是为了在确定是否在'范围内'时考虑这两个边界的过程。

“我宁愿不使用VBA” - 但可能是明智的!

但是,使用某些固定引用($)应该使其比使用标准公式稍微简单一些,因为可以通过复制公式来查询给定的离散范围(可以在ColumnA中追加)来查询各种搜索值根据需要向右/向下输入(如号码格式)Row1中的进一步搜索值。