需要计算单元格的内容以生成针织图案

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 已经超过 25 年了,这个公式包含不少于 8 个(!)我从未听说过的函数:-) (4认同)
  • 圣烟蝙蝠侠!它有效 - 我的 Excel 版本抱怨 1 个函数,然后无论如何都应用它。现在正在研究这些功能 - 感谢一些新功能:) (3认同)
  • @SolarMike,我想我打了相当多的高尔夫球,让一切变得更加用户友好。 (3认同)

DS_*_*don 8

如果你妈妈没有最新的 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)

我可能会补充一点,它允许在图案中添加不止一种颜色......

在此输入图像描述

通过一些条件格式,这位好女士可以设计自己的多色图案!

在此输入图像描述