jqgrid 判断是否最后一行_连续数据的条件判断

84b40040346ae70984d9759677d4f183.gif

前几天有学员问了一个问题,如果他的单元格中包含某些字符,那么在最后一列中就显示有用,否则显示不可用。如下:

当含有carpet时,最后一列中显示有用。

c450b3f9ffeddd1df554c873a51e6add.png

其实,这个函数非常简单,既然是查找某个字符,直接用FIND函数就可以了,然后搭配着IF函数进行判断,结果不就出来了么?

有了这个思路,来看一下另外一个同学碰到的问题,看看该如何解决?表格是这样的:

2df88ab21874ef00261a98e6e49d790b.png

她的问题是这样的:如果有4个连续的衣服码都有库存,那么就在最后一列中标注为齐码,否则就为断码。比如第2行中的T101031,根据上述说明,结果应该是断码;第3行中的结果就是齐码;

先来分析一下思路,这个题跟开始的那个有点不一样,应该可以说是升级版。

怎么去判断是连续的呢?我们用1表示有,用0表示无,假设将一行中的码数全部连接在一起,只要遇到了“1111”这种四个1在一起的,那么不就是说明这件款式是齐码的么!

根据上述这个思路,得出:

1、先判断库存情况,大于0的转换成1,0的保持不变;

2、将1中的判断情况连接在一起成为文本串;

3、判断有没有“1111”这种情况;

4、根据第3条得出是否是断码或齐码的结果

一起来分步骤写一下公式:

转换为1和0,肯定是IF函数了:

6002e9ca1de0e2b2ccdf592e49cd2253.png

这个利用了数组公式的特性,所以得出的结果是一组数据:

328aa12190221b1420d17d80572bfecd.png

将这些结果连成一串的函数就比较多了,都分享一下吧:

第一个:Microsoft365中的Textjoin函数

cbae73ac7ab3c3d5d22667ea196957a3.png

公式为:

=TEXTJOIN("",1,IF(B2:G2<>0,1,0))

第一个参数是分隔符的意思,第二个参数是是否忽略空值,第三个参数自然就是要连接的文本了;

缺陷:只有Microsoft 365, Office2019,WPS2019中才有这个函数;

如果不是上述这些版本怎么办?接下来看:

第二个:CONCAT函数

cd81010528d71788ba382f7079ece1cd.png

公式为:

=CONCAT(IF(B2:G2<>0,1,0))

参数虽然比Textjoin简单得多,但是如果之间要有连接符的话,还是得用Textjoin。

其实关于连接文本的函数,除了上述两个之外,还有Phonetic函数,它只对文本起作用;Concatenate函数,还有&符号,只是由于本题的限制,这三个都用不上,大家作为了解就好。

接下来,就是判断是否有连续的库存了。这个直接用FIND函数搞定。

29fcd247f74bb430b496025d51a6ec49.png

公式为:

FIND("1111",CONCAT(IF(B2:G2<>0,1,0)))

这种结果说明没找到,把公式下拉填充一下看看。

3d85a2ce7a67b932cbb97f049d48166f.png

很明显,能得到结果的,就表示有连续的4个1,结果就应该是齐码。但是这里直接嵌套IF函数并不能得到我们要的结果,因为IF的判断条件值的结果应该是True或False,所以这一步还需要套一个函数ISERROR直接做判断:

42a3e42e4f70eab545daf1f7ffe2daf0.png

有了结果True和False,最后再用IF函数嵌套就简单多了。

e3fefb8c6ec51f6f3f0aafc53fe2ba2c.png

公式为:

=IF(ISERROR(FIND("1111",CONCAT(IF(B2:G2<>0,1,0)))),"断码","齐码")

好了,如果你有更好的方法,请留言分享给大家,一起交流。

ee41c9faf0bd988d3feda9c791e347ce.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值