我有一个很棒的excel公式,比如 -
=CONCATENATE( IF( AND(LEN(A1)>3,LEN(A1)>=5),CONCATENATE( VLOOKUP(NUMBERVALUE(LEFT(RIGHT(A1,5),2)),rng,2)," হাজার "),IF( AND(LEN(A1)>3,LEN(A1)=4),CONCATENATE( VLOOKUP(NUMBERVALUE(LEFT(RIGHT(A1,4),1)),rng,2)," হাজার "),"")),IF(LEN(A1)>2,IF(NUMBERVALUE(LEFT(RIGHT(A1,3),1))>0,CONCATENATE(VLOOKUP(NUMBERVALUE(LEFT(RIGHT(A1,3),1)),rng,2),"শত "),""),""),IF(NUMBERVALUE(IF(LEN(A1)>1, RIGHT(A1,2), RIGHT(A1,1)))>0,VLOOKUP( NUMBERVALUE(IF(LEN(A1)>1, RIGHT(A1,2), RIGHT(A1,1))),rng,2,FALSE),""))
在这个公式中,我不得不使用' A1'一次又一次地参考。 我需要一个函数或类似的东西 -
=DEFVAR(A1,'somevar',CONCATENATE( IF( AND(LEN(somevar)>3,LEN(somevar)>=5),CONCATENATE(....)
这样我就可以在' M9'上使用公式像这样的细胞 -
=DEFVAR(M9,'somevar',CONCATENATE( IF( AND(LEN(somevar)>3,LEN(somevar)>=5),CONCATENATE(....)
有没有办法实现这个目标?
答案 0 :(得分:1)
您的基本排名是,"在公式中声明变量并将其用于相同的公式"。
答案是否定的。
Excel中的任何公式都不允许声明变量并进一步使用它。编程时这是一种常见的做法,并且不用说如何,因为在某处你已经写过你正在使用VBA!。
现在让我告诉您我们如何间接使用Excel公式中的变量。
它是一个作为变量的单元格地址。其他是命名范围,它携带多个值,如数组。您还可以使用公式作为变量。
让我说一下,在单元格中编写一个公式并命名它,并在任何公式中使用该名称,就像我们在编程时调用过程一样。我在这里向您展示了一个简单的例子。
写公式为A2,= if(A5> = 1000,Max(B2:B100),0)并将其命名为MYMAX。然后在其他公式中你可以称之为,= if(B2 =" A01",MYMAX," Nothing")。
希望这有助于您认识到,为什么我们需要编程。
答案 1 :(得分:1)
不,Excel公式不允许您在其中声明变量。
但是在这种情况下可以做的是使用另一个包含LEN(A1)
的单元格,并在公式中使用它。 Excel非常聪明的计算周期将保证在任何相关公式之前评估LEN(A1)
。
基本上,你正在使用一个或多个其他单元来保存"变量"。
这也使您的电子表格更易于维护。如果可以,请避免使用VBA; (1)难以进行版本控制,(2)由于安全问题,并非所有公司都允许使用.xlsm
,(3)VBA在单个线程中运行。