我是一名老师,需要在 Excel 中将一些类(class)表转换为工作量。但我想让它自动转换。请参阅下表,其中字母 M-A-N(早上、下午、晚上)之前是工作日:[2 = 星期一,3 = :星期二,4 = 星期三,5 = 星期四,6 = 星期五],M-A-N 之后的数字是订购类(class)数量,每节课 50 分钟)。我给出下面的例子:
那么我可以在 Excel 中使用哪个公式将第一列(类)转换为第二列(工作负载)?我只给出了一个小例子,我有很多行需要转换。总之,我想要天数(字母 MAN 之前的位数)乘以类(class)数(MAN 之后的位数)的乘积。提前致谢!
我尝试过,但找不到算法或公式来做到这一点。我尝试使用 RIGHT 和 LEFT,但是 M-A-N 之前的数字长度发生变化,所以我不知道该怎么办。
最佳答案
尝试使用 TEXTBEFORE()
和 RIGHT()
函数:
• 单元格 B2 中使用的公式
=--RIGHT(TEXTBEFORE(A2:A5,{"M","A","N"}))
对于旧版本,可以尝试:
=--RIGHT(LEFT(A2,MAX(IFERROR(FIND({"M";"A";"N"},A2),""))-1))
或者,
=--MID(A2,MAX(IFERROR(FIND({"M";"A";"N"},A2),""))-1,1)
编辑:
根据OP:
Thank you so much for your help! But unfortunately it didn't work :-( I am using Excel from Office 365, portuguese version. Below you can find the error: dropbox.com/scl/fi/21x49m87e4x40o0fj8c1k/…
在葡萄牙语版本的 Excel 中:
=--DIREITA(TEXTBEFORE(A2:A5;{"M"."A"."N"}))
或者
=--EXT.TEXTO(A2;MÁXIMO(SEERRO(PROCURAR({"M";"A";"N"};A2);""))-1;1)
或者,
=--DIREITA(ESQUERDA(A2;MÁXIMO(SEERRO(PROCURAR({"M";"A";"N"};A2);""))-1))
警告:旧版本的公式可能需要在退出时按 CTRL+SHIFT+ENTER编辑模式,其 Excel
依赖项,MS365
或 Excel 2021
用户不需要这样做。
根据OP中的新更新进行编辑
In summary, I want the product of the number of days (number of digits before letters MAN) TIMES the number of classes (number of digits AFTER MAN).
=PRODUCT(LEN(TEXTSPLIT(A2,{"M","A","N"})))
整个系列的溢出版本:
=DROP(REDUCE("",A2:A15,LAMBDA(x,y,VSTACK(x,PRODUCT(LEN(TEXTSPLIT(y,{"M","A","N"})))))),1)
或者,
=BYROW(A2:A15,LAMBDA(x, CONCAT(PRODUCT(LEN(TEXTSPLIT(x,{"M","A","N"}))))))+0
关于excel将类(class)表转换为工作量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77629157/