Excel獲取單元格批註
Microsoft Office中的Excel軟體有著強大的資料統計分析功能,最近自己碰到一個問題,需要將一列單元格中的批註提取到另外的一列中去。如果數量比較少大可以通過“Ctrl+C”和“Ctrl+V”來實現,但是面對成百上千行資料的就出現麻煩了。自己就在網上搜索了一些關於此方面的資料,發現Excel有兩個方面的應用非常實用:VBA和巨集表函式,這裡只是舉出其中兩個簡單的例子,如有興趣可以深究。
一、獲取單元格批註
VBA全稱為:Visual Basic for Applications,是一種Visual Basic的一種巨集語言,主要能用來擴充套件Windows的應用程式功能,特別是Microsoft Office軟體。雖然這種語言較為古老,但在Microsoft Office軟體風靡全球的情形下還是有很大的應用價值,特別是一些使用者非常熟悉了Excel的操作介面之後就對它有著非常大的依賴性,通過Excel自帶的VBA程式來對資料進行處理可以帶來極大的方便。
如下圖所示,A列中有多行帶有批註的單元格,如何將A列中的單元格都提取到對應的E列中來呢?通過如下的幾個步驟可以成功地獲取單元格批註。
1、開啟VBA,新建模組,建立使用者自定義函式,如下圖所示:
2、編寫自定義函式GetComment()
Function GetComment(myRange As Range) As String
GetComment = myRange.Comment.Text
End Function
如下圖所示:
3、呼叫自定義函式GetComment()。在E1的編輯框中輸入:
按“F9”呼叫GetComment()函式之後,成功獲取批註如下:
4、 呼叫SUBSTITUTE()函式,去掉多餘文字
從上圖可以看出,E1單元格中已經成功地將A1中的批註獲取到了,但是包含了當前編輯者的姓名,如上圖中的“ZKH:”,可以通過呼叫如下函式去掉多於的使用者名稱文字。如下圖所示:
5、拖拽填充柄,依次獲取單元格批註
二、獲取某路徑下檔名
除了Excel自帶的函式以及通過VBA自定義的函式之外,我們在Excel中有可能用到的一種函式叫做“巨集表函式”,以下也通過一個具體的應用小例子來簡單演示。
在應用過程中,也許會碰到將一堆檔案的名字加以統計起來的需求,如果檔案數較多的時候是個麻煩的事情,Excel中自帶的巨集表函式可以很輕鬆地解決類似這樣的問題,主要以下操作步驟:
1、定義新名稱
通過“公式→定義新名稱”,定義一個“myfile”的巨集表函式,其中名稱myfile呼叫了Excel中自帶的“FILES()”的函式,如下所示:
2、呼叫myfiles(),在C1輸入“=myfile”按“F9”
路徑檔案如下:
執行效果如下:
3、調整效果
如上圖所示,將“D:\新建資料夾\”路徑下的4個檔名都獲取到C1的單元格中,能否將檔名逐個地依次獲取到單元格呢?答案是可以的,我們還可以對指定的檔案型別加以獲取:
呼叫INDEX()函式,如下:
拖拽填充柄如下:
4、加條件判斷
如上圖所示,下拉的單元格數超出了檔案數的時候,容易出現錯誤亂碼如“#REF!”,可通過IF條件函式加以判斷如下:
5、指定檔案型別獲取
如在myfiles名稱中指定檔案型別,所定義的巨集表函式可只獲取指定的檔名列表,如下指定.xls檔案型別:
結果如下:
2014-10-27,為了每次使用方便,通過程式碼建立以上名稱以及呼叫:
//VBA,執行巨集建立名稱:
Sub myFile()
' 獲取路徑下所有檔名'
ActiveWorkbook.Names.Add Name:="myfile", RefersToR1C1:= _
"=FILES(""C:\Users\ZKH\Desktop\2014-10-20\*.*"")"
ActiveWorkbook.Names("myfile").Comment = ""
End Sub
//呼叫
=IF(ROW()>COUNTA(myfile),"",INDEX(myfile,ROW()))