Sol*_*ike 9 excel count excel-formula
所以这需要一些细节:
n,X,X,X,n 位于单元格 B5 至 F5 中
我需要得到以下输出:
1n,3x,1n
对于这个特定的行。
现在,n 和 X 代表针织中的针迹,“n”是背景颜色,“x”是前面颜色。
有一个单元格 B5:F12 数组代表行和针迹,因此每一行都有不同的针迹或背景颜色排列。
我需要避免使用 vba,因为这需要尽可能稳定,用户是我 90 岁的妈妈:),她所需要的只是一个输入名称和布局(我已经完成)和模式的地方每行的列表(也已排序)。
我开始考虑以下事情:
if(B5=C5,1&B5,"")
Run Code Online (Sandbox Code Playgroud)
但考虑到组合的数量,它会变得很长。
有任何想法吗?干杯。
Jvd*_*vdV 11
你可以尝试:
公式为H5:
=BYROW(B5:F12,LAMBDA(x,LET(z,REDUCE(VSTACK(TAKE(x,,1),1),DROP(x,,1),LAMBDA(a,b,IF(b=@TAKE(a,,-1),IF(COLUMNS(a)=1,VSTACK(b,TAKE(a,-1)+1),HSTACK(DROP(a,,-1),VSTACK(b,DROP(TAKE(a,,-1),1)+1))),HSTACK(a,VSTACK(b,1))))),TEXTJOIN(",",,DROP(z,1)&TAKE(z,1)))))
Run Code Online (Sandbox Code Playgroud)
我会看看是否可以将字节数减少一点......
编辑:
在打了相当多的高尔夫球之后(减少到 119),我想出了:
=BYROW(B5:F12,LAMBDA(x,MID(REDUCE("",x,LAMBDA(a,b,IF(RIGHT(a)=b,LEFT(a,LEN(a)-2)&1+LEFT(RIGHT(a,2)),a&",1")&b)),2,99)))
Run Code Online (Sandbox Code Playgroud)
虽然不如第一个动态,但由于每个针织图案只有 <10 列,因此是可能的。
如果你妈妈没有最新的 Excel(带有 LAMBDA 等),这里有一个 @JvdV 答案的替代方案,它只使用 LET、SEQUENCE 和 FILTER。
它只接受一行,因此您需要填写公式。
=LET(p,LOWER(B5:F5),c,COLUMNS(p),s,SEQUENCE(,c),
a,IF(s=c,c,IF(INDEX(p,,s)<>INDEX(p,s+1),s,0)),
b,FILTER(a,a>0),t,SEQUENCE(,COLUMNS(b)),
n,IF(t=1,INDEX(b,,t),INDEX(b,,t)-INDEX(b,,t-1)),
TEXTJOIN(",",TRUE,n & INDEX(p,,b)))
Run Code Online (Sandbox Code Playgroud)
我可能会补充一点,它允许在图案中添加不止一种颜色......
通过一些条件格式,这位好女士可以设计自己的多色图案!