小赖同学吧 关注:26贴子:172
  • 0回复贴,共1

问题:连续两个负数就取反,取反后再连续两个负数,迭代取反

只看楼主收藏回复


问题:连续两个负数就取反,取反后再连续两个负数,迭代取反
A列连续2个负数,就下方的数字取反,取反后再连续负数,在取反
解:
以图中的888为例讲解,B列就是需要显示888或者-888
依据就是,B列对应行,上方,有多个组连续2个负数,多少组就取反多少次
单数组就取反,双数组就负负得正为本身
上方为主要思想逻辑,一定要先理解
然后我们需要怎么知道上方有几组连续负数的
那么上方每个单元格只取首个字符,负数的话取到的是-,
正数的话是其他数字(不需在意是啥),在合并成一个文本
=CONCAT(LEFT(B$1:B7,1))
条67--22
要统计连续负负的组数,就统计这个文本里--的个数
就查找--替换为0(我是将两个长度的--,替换成一个长度的0),看少了多少个字符
=COUNTA(B$1:B7)-LEN(SUBSTITUTE(CONCAT(LEFT(B$1:B7,1)),""--"",0))
得到的数字,只是上方连续2个负数的组数
再判断是否单数,单数*-1,双数*1
=IF(ISODD(COUNTA(B$1:B7)-LEN(SUBSTITUTE(CONCAT(LEFT(B$1:B7,1)),""--"",0))),-1,1)*A8
部分版本需要按shift+Ctrl+回车


IP属地:广东1楼2024-04-12 10:46回复