excel 识别单元格是否是基于特定条件的范围内的分数值

k4ymrczo  于 2023-05-19  发布在  其他
关注(0)|答案(4)|浏览(166)

使用Excel公式,我想识别A列中的W、X、Y和Z,看看它们在B列中的对应单元格值是否包含分数值。期望的结果在C列,我的公式的结果在D列。TRUE=分数,FALSE=整数
我的公式无法识别X有两个分数(0.1和0.9),因为B列中相应值(0.1,1,2和0.9)的相加是一个整数。然而,它准确地识别出Y的值之一是分数,因为Y的列B中的相应值的相加不是整数。
我的配方:

=IFERROR(IF(SUM(IF($A$2:$A$12=A2,$B$2:$B$12))/ROUND(SUM(IF($A$2:$A$12=A2,$B$2:$B$12)),0)=1,0,1),0)=1
色谱柱AB栏预期结果用我的公式得出的结果
X0.1假的
X1假的
Y0.7
X假的
Y
Z轴假的假的
X0.9假的
Z轴假的假的
Y4.1
Z轴假的假的
W的0.6

不幸的是,VBA不是一个选项。

vxqlmq5t

vxqlmq5t1#

尝试:

·单元格C2中使用的公式

=SUM(($A$2:$A$12=A2)*$B$2:$B$12)-SUM((INT($B$2:$B$12)*($A$2:$A$12=A2)))<>0

或者,您可以使用LET()函数,只是范围不会重复多次。

=LET(
    x, $A$2:$A$12,
    y, $B$2:$B$12,
    SUM((x = A2) * y) -
        SUM(
            (INT(y) * (x = A2))
        ) <> 0
)

使用MOD()MAX()的另一种替代方案

·单元格C2中使用的公式

=MAX(($A$2:$A$12=A2)*MOD($B$2:$B$12,1))<>0

使用LET()

=LET(
    x, $A$2:$A$12,
    y, $B$2:$B$12,
    MAX(
        (x = A2) * MOD(y, 1)
    ) <> 0
)

您也可以使用BYROW()

·单元格C2中使用的公式

=BYROW(
    A2:A12,
    LAMBDA(m,
        MAX(
            (m = A2:A12) *
                MOD(B2:B12, 1)
        ) <> 0
    )
)
gcmastyq

gcmastyq2#

=NOT(INT(B2:B12)=B2:B12)

PS:单元格C3的期望结果应为假-即这不是分数。

bmp9r5qi

bmp9r5qi3#

另一个解决方案:
过滤器查看A列中具有相同字母的所有行
选择仅查看第2列中的值
MOD只保留分数值
OR来测试是否有任何行具有小数值

=OR(MOD(CHOOSECOLS(FILTER($A$2:$B$12,$A$2:$A$12=A2),2),1)>0)
gojuced7

gojuced74#

您可以使用SUMPRODUCT检查B列中的所有值与A列中的特定值之和是否不同于B列中的所有integer值与A列中的特定值之和。

=SUMPRODUCT(--($A$2:$A$12=A2)*$B$2:$B$12)<>SUMPRODUCT(--($A$2:$A$12=A2)*INT($B$2:$B$12))

相关问题