轉(zhuǎn)轉(zhuǎn)大師PDF轉(zhuǎn)換器
支持40多種格式轉(zhuǎn)換,高效辦公
在Excel中,如果我們需要算公式的時(shí)候我們一般都是使用宏表函數(shù)VALUATE來實(shí)現(xiàn),但是這個(gè)有一個(gè)不方便的點(diǎn)就在于如果我們算式和計(jì)算結(jié)果的列相對位置發(fā)生變化時(shí),不能直接修改公式,而是要再次定義名稱。今天小編就來給大家分享下取代這個(gè)又超級(jí)方便的操作方法。
Excelman認(rèn)為使用自定義函數(shù)是不錯(cuò)的替代方法。下面是自定義函數(shù)EVALUATEVBA的代碼。函數(shù)的代碼只有三行!諸位幾乎不需要考慮任何VBA代碼邏輯,簡單易用。總之,名副其實(shí)拿來即用!
代碼如下:
Public Function EVALUATEVBA (ByVal s As String) As Variant
EVALUATEVBA = Application.Evaluate(s)
End Function
自定義函數(shù)EVALUATEVBA怎么樣使用呢?
先把自定義函數(shù)的三行代碼添加到工作簿的模塊中。之后就能在工作簿里使用自定義函數(shù)EVALUATEVBA了。代碼添加到工作簿的模塊具體操作步驟請看下圖二。
那么,函數(shù)EVALUATEVBA有什么作用呢?它的作用與宏表函數(shù)EVALUATE相似,但用起來方便多啦!
比如上述圖一求算式的計(jì)算結(jié)果問題,B1單元格直接填寫公式 =evaluatevba(A2),向下填充公式,OK!
之前Excelman在窩窩的微信公眾號(hào)發(fā)表過一篇《奇招解難題,另類使用Max函數(shù)求最大值》[教程最后左下角“閱讀原文”點(diǎn)擊直達(dá)]。文中表妹的問題若用EVALUATEVBA,做法來得更直接。
如圖四,要求從B列的裝箱號(hào)“1,3,4,5”得到最大值5顯示在C列的裝箱號(hào)最大值。C1單元格填寫公式 =evaluatevba("=max({"&B2&"})") 或=MAX(evaluatevba("{"&B2&"}")),向下填充公式,又OK!
從=MAX(evaluatevba("{"&B2&"}"))這個(gè)公式可以看出,自定義函數(shù)evaluatevba和宏表函數(shù)evaluate一樣,可以將符合數(shù)組書寫規(guī)則的字符文本,如“{1,3,4,5}”這樣的字符文本,轉(zhuǎn)為讓Excel函數(shù)能夠識(shí)別的作為計(jì)算數(shù)據(jù)的數(shù)組。
Evaluatevba有時(shí)給填充公式提供相當(dāng)大的便利。比如下圖四,假設(shè)工作簿中有名為“1月、2月、3月”的工作表,A列列示的是工作表名,現(xiàn)在需要在B列分別計(jì)算出3個(gè)工作表B列的數(shù)量(數(shù)字)的合計(jì)數(shù)。可以這樣做:B2單元格填寫公式
=evaluatevba("=SUM('"&A2&"'!B:B)")&T(NOW()),然后向下填充公式。T(NOW())的作用是令Excel在工作表數(shù)據(jù)變動(dòng)時(shí)重新計(jì)算更新計(jì)算結(jié)果。B2單元格的公式,其效果與
=SUM('1月'!B:B) 相同,但是使用自定義函數(shù)EVALUATEVBA的好處是可以直接向下復(fù)制填充公式。
以上就是今天給大家分享的關(guān)于完美替代宏表函數(shù)EVALUATE的三行代碼,有需要的小伙伴們可以根據(jù)以上步驟進(jìn)行操作,如果需要pdf轉(zhuǎn)html可以使用topdf轉(zhuǎn)換器。