Excel常用解決方法(一)

2021-08-30 12:58:24 字數 1371 閱讀 8500

日常工作中常常要用excel處理這樣或那樣的資料,其中excel的公式以及macro的使用會減少很多的重複工作。有些操作在vba中很容易實現,但是如果僅僅使用公式時,很多操作就不容易實現了。本文記錄一些我常用到的公式。

一、擷取當前sheet名

在當前sheet中,取得sheet名的操作:

=mid(cell("filename",a1),find("]",cell("filename",a1))+1,len(cell("filename",a1)))

解說:1. cell("filename",a1)

可以取得類似 d:\test\[test.xls]sheet1 的字串。其中sheet名是當前所在sheet的名稱。

2. 通過mid來解析並拆分出字串sheet1,以達到目的。

二、獲得當前workbook的sheet一覽。

這個操作需要使用workbook的name定義。

操作方式:

1. 增加name定義sht,內容為

=replace(get.workbook(1), 1, find("]", get.workbook(1)), ) & t(now())

2. 在公式中使用時,用index(shts, 數字) 來取得對應的sheet名。

例如:=if(row()>counta(shts),"",hyperlink("#"&index(shts,row())&"!a1",index(shts,row())))

上面的公式得到的結果是,以行號(row())為索引,逐行顯示sheet名,並且將顯示單元格連線到對應的sheet中的a1單元格上。

解說:1. name定義中,使用 & t(now())的意圖是隨時更新鏈結資訊,如果沒有,則在修改後,可能出現使用的列表是修改前的情況。

2. get方法,必須在name定義中使用,直接寫在公式中,不會被識別。查詢了一下原因,是因為get方法是巨集表函式。關於get,還有get.document等。

增加name的vba

sub addname()

dim strname as string

strname = "shts"

names.add name:=strname, referstor1c1:= _

"=replace(get.workbook(1),1,find(""]"",get.workbook(1)),)&t(now())"

end sub

三、取得字串對應的單元格的值

=indirect(address(3, 2, 1, false, index(shts,(row()+2))), false )

解說:1. address函式,返回類似sheet1!$e$4的字串。

2. indirect函式,返回指定字串對應的單元格的內容。

excel求和為零的解決方法

某天,有個妹子發過來資訊說是需要計算某一行的值,使用了sum函式,但始終是0,如下圖 作為程式設計師,第乙個想法就是這一列裡邊有字串,所以他的和是0,於是我就有了如下操作 全選這一行,右鍵設定單元格格式,選中數值,然後再用sum求和。這樣大多同學就好使了,但我的還是不好使。於是上網找教程,看到rep...

C 呼叫Excel版本不相容的解決方法

在安裝了office 2010的機器上開發出來的 作用 寫excel 程式,是無法在2003版本上執行的 其原因是版本不相容 報錯資訊如上所示。產生的原因 1。我們不可以直接拷貝.exe給使用者使用,因為相關依賴包在使用者電腦上不存在。所以,我們應該生成安裝檔案,然後進行安裝 在安裝過程中,我們需要...

Excel 2016 開啟後空白的解決方法

最近使用excel 2016時遇到乙個這樣的狀況,就是雙擊開啟乙個有內容的xlsx 後顯示空白,用管理員身份開啟也是一樣,這裡總結一下解決方法 說明 office 2016在安裝時會預設安裝在系統盤,都不給修改安裝位置的機會,我的安裝位置是做了修改的 修改office 2016安裝位置的方法 安裝位...