EXCEL如何对两列数值进行对比

如图的两列数值 ,从A列中查询,查找与B列数值进行对比,如果同时符合以下两个条件1、Z前面的字符相同2,Z后面的数值A>B,那么在B后面把符合条件的所有A中的字符标记在C列中 请问如何设置函数B列中每一个单元格都要对整个A列进行搜索,只要存在符合条件的,那么标记出来(B中每一个单元格,对应查询区域是整个A列)
最终运算出来的效果图,像C列所示

两种作法:

1、对B列进行颜色标记,

2、在C列出满足条件的行。

方法1:先把公式复制 =IF((LEFT(A2,12)=LEFT(B2,12))*(RIGHT(A2,1)<RIGHT(B2,1)),1,0),在条件格式中----新建条件规则----使用公式...粘贴,格式---填充---选择一个颜色,确定--应用。然后用格式刷将B2的格式双击,复制到B3以下的单元格。

方法2:在C列直接输入公式=IF((LEFT(A2,12)=LEFT(B2,12))*(RIGHT(A2,1)<RIGHT(B2,1)),1,0), 下拉,就OK。

追问

我的表述可能不够清楚,这个实现的是同一行之间的数值对比,我的意思是B列中每一个单元格都要对整个A列进行搜索,只要存在符合条件的,那么标记出来(B中每一个单元格,对应查询区域是整个A列)

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-03-30

C2输入

=IF(COUNTIF($B$2:$B$3,A2),A2,"")

下拉

不知是不是你说的意思

追问

我的意思是B列中每一个单元格都要对整个A列进行搜索,只要存在符合条件的,那么标记出来(B中每一个单元格,对应查询区域是整个A列)标记的目的是说明在A中存在,比B的末位数值大的字符串

追答

你说一下结果是什么,才知道你的意图,不然都是猜测,给个效果表图

追问

追答

C2输入

=INDEX($A:$A,SMALL(IF((LEFT($A$2:$A$17,13)=LEFT($B2,13))*(--MID($A$2:$A$17,14,9)>--MID($B2,14,9)),ROW($2:$17),4^8),COLUMN(A1)))&""

数组公式,先按住CTRL+SHIFT,最后回车,使得编辑栏公式两端出现花括号{ }

公式下拉再右拉到无数据

追问

高手在追问一个问题,为什么小范围测试正确,但是 大规模应用后  我把公式调整结果运算错误呢 一直找不到问题所在

追答

这个公式是有范围的,如果范围扩大,要更改公式中区域范围,但是范围必须是数据的有效范围,不能扩大,你看看是不是这个原因

本回答被提问者采纳
第2个回答  2019-03-30
C1=IF(AND(COUNTIF(A:A,LEFT(B1,FIND("Z",B1)-1)&"*")>0,RIGHT(B1,LEN(B1)-FIND("Z",B1))<RIGHT(A1,LEN(A1)-FIND("Z",A1))),B1,"")
下拉公式追问

 稍微有点偏差 ,我要做到的  只要A列中存在符合条件的B列的字符 那么在C列中标记出来 

按照这个标准的话 目前B列的两个字符 在A列中都可以找打符合条件的值

B列中每一个单元格都要对整个A列进行搜索,只要存在符合条件的,那么标记出来(B中每一个单元格,对应查询区域是整个A列)

追答

执行这个代码

Sub aa()
Dim i, k
For i = 2 To Range("a65536").End(xlUp).Row
For k = 2 To Range("b65536").End(xlUp).Row
  X = Left(Cells(i, "A"), 12)
  N = Left(Cells(k, "b"), 12)
  
  y = Right(Cells(i, "A"), 1)
  Z = Right(Cells(k, "b"), 1)
  
  If X = N And Z < y Then
    Cells(i, "c") = Cells(i, "A")
    End If
    Next
    Next
End Sub

追问

文字可能实在是表达不清 这样图示是不是可以表述更加直观些

追答

用代码运行,然后将数据合并到1个单元格

第3个回答  2019-03-30
Ctrl+/
相似回答