2 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
---- 開(kāi) 放 數(shù) 據(jù) 庫(kù) 互 連(ODBC) 已 經(jīng) 成 為Client /Server 數(shù) 據(jù) 庫(kù) 應(yīng) 用 系 統(tǒng) 中 訪 問(wèn) 遠(yuǎn) 程 數(shù) 據(jù) 庫(kù) 的 一 個(gè) 標(biāo) 準(zhǔn)。 做 為 強(qiáng) 大 的 前 端 開(kāi) 發(fā) 工 具,MS Visual Basic 為 開(kāi) 發(fā) 者 提 供 了 多 種 訪 問(wèn)ODBC 數(shù) 據(jù) 源 的 途 徑, 如JET 數(shù) 據(jù) 庫(kù) 引 擎、ODBC API 函 數(shù)、RDO 接 口 等。 比 較 而 言, 直 接 使 用ODBC API 函 數(shù) 的 編 程 難 度 最 大, 但 由 此 獲 得 的 存 取 數(shù) 據(jù) 庫(kù) 的 性 能 也 是 最 佳。 誠(chéng) 然,VB 4.0 企 業(yè) 版 提 供 的RDO 接 口 的 性 能 已 經(jīng) 接 近ODBC API, 但 是 遺 憾 的 是, 這 個(gè) 接 口 只 能 在32 位Windows 環(huán) 境 中 運(yùn) 行, 而ODBC API 函 數(shù) 則 沒(méi) 有 這 個(gè) 限 制。
---- ODBC API 函 數(shù) 的 聲 明 方 法
---- 與 使 用 其 它 動(dòng) 態(tài) 庫(kù) 函 數(shù) 一 樣, 在VB 中 使 用ODBC API 函 數(shù) 之 前, 必 須 事 先 聲 明 將 要 使 用 的 函 數(shù)、 常 量 和 數(shù) 據(jù) 結(jié) 構(gòu)。ODBC API 函 數(shù) 駐 留 在ODBC 運(yùn) 行 動(dòng) 態(tài) 庫(kù)ODBC.DLL(16 位) 或ODBC32.DLL(32 位) 中, 該 動(dòng) 態(tài) 庫(kù) 位 于Windows 子 目 錄system 中。 通 常 做 法 是 在VB 項(xiàng) 目 中 單 獨(dú) 使 用 一 個(gè) 模 塊 文 件, 然 后 將ODBC API 聲 明 語(yǔ) 句 加 入 其 中, 如 下 所 示, 就 是 本 文 實(shí) 例 中 使 用 的 模 塊 文 件module1.bas 的 內(nèi) 容:
Declare Function SQLAllocEnv Lib "
odbc32.dll" (phenv&) As Integer
Declare Function SQLAllocConnect Lib "
odbc32.dll" (ByVal henv&, phdbc&) As Integer
Declare Function SQLAllocStmt Lib "
odbc32.dll" (ByVal hdbc&, phstmt&) As Integer
Declare Function SQLConnect Lib "
odbc32.dll" (ByVal hdbc&, ByVal szDSN$,
ByVal cbDSN%, ByVal szUID$, ByVal cbUID%,
ByVal szAuthStr$, ByVal cbAuthStr%) As Integer
Declare Function SQLColAttributesString Lib "
odbc32.dll" Alias "SQLColAttributes"
(ByVal hstmt&, ByVal icol%, ByVal fDescType%,
ByVal rgbDesc As String, ByVal cbDescMax%,
pcbDesc%, pfDesc&) As Integer
Declare Function SQLDisconnect Lib "
odbc32.dll" (ByVal hdbc&) As Integer
Declare Function SQLExecDirect Lib "
odbc32.dll" (ByVal hstmt&, ByVal
szSqlStr$, ByVal cbSqlStr&) As Integer
Declare Function SQLFetch Lib "
odbc32.dll" (ByVal hstmt&) As Integer
Declare Function SQLFreeConnect Lib "
odbc32.dll" (ByVal hdbc&) As Integer
Declare Function SQLFreeEnv Lib "
odbc32.dll" (ByVal henv&) As Integer
Declare Function SQLFreeStmt Lib "
odbc32.dll" (ByVal hstmt&, ByVal fOption%) As Integer
Declare Function SQLGetData Lib "
odbc32.dll" (ByVal hstmt&, ByVal icol%,
ByVal fCType%, ByVal rgbValue As String,
ByVal cbValueMax&, pcbValue&) As Integer
Declare Function SQLNumResultCols Lib "
odbc32.dll" (ByVal hstmt&, pccol%) As Integer
Global Const SQL_C_CHAR As Long = 1
Global Const SQL_COLUMN_LABEL As Long = 18
Global Const SQL_DROP As Long = 1
Global Const SQL_ERROR As Long = -1
Global Const SQL_NO_DATA_FOUND As Long = 100
Global Const SQL_SUCCESS As Long = 0
---- 需 要 說(shuō) 明 的 是, 在 函 數(shù) 聲 明 時(shí), 應(yīng) 該 根 據(jù) 程 序 的 運(yùn) 行 環(huán) 境 選 擇 相 應(yīng) 的 動(dòng) 態(tài) 庫(kù)。 在VB 子 目 錄samples\remauto\db_odbc 中 有 兩 個(gè) 正 文 文 件ODBC16.TXT 和ODBC32.TXT, 分 別 存 有 所 有16 位 和32 位ODBC API 函 數(shù)、 常 量 和 數(shù) 據(jù) 結(jié) 構(gòu) 的 聲 明 語(yǔ) 句, 編 程 時(shí) 可 以 從 中 拷 貝 所 需 的 聲 明 語(yǔ) 句。
---- 使 用ODBC API 的 編 程 方 法
---- 在VB 中 調(diào) 用ODBC API 函 數(shù) 訪 問(wèn)ODBC 數(shù) 據(jù) 庫(kù), 代 碼 編 制 一 般 是 按 照 下 列 過(guò) 程 進(jìn) 行 的:
---- 一、 初 始 化ODBC
---- 在 這 個(gè) 過(guò) 程 中, 應(yīng) 用 程 序 將 通 過(guò) 調(diào) 用SQLAlloEnv 函 數(shù) 初 始 化ODBC 接 口, 獲 取ODBC 環(huán) 境 句 柄。ODBC 環(huán) 境 句 柄 是 其 它 所 有ODBC 資 源 句 柄 的 父 句 柄, 因 此 無(wú) 論 程 序 將 建 立 多 少 個(gè)ODBC 連 接, 這 個(gè) 過(guò) 程 只 需 執(zhí) 行 一 次 即 可。 例 如:
Dim rc As Integer 'ODBC函數(shù)的返回碼
Dim henv As Long 'ODBC環(huán)境句柄
rc = SQLAllocEnv(henv) '獲取ODBC環(huán)境句柄
---- 二、 與ODBC 數(shù) 據(jù) 源 建 立 連 接
---- 這 個(gè) 過(guò) 程 由 下 列 兩 個(gè) 步 驟 組 成:
---- 1、 調(diào) 用SQLAllocConnect 函 數(shù) 獲 取 連 接 句 柄。 例 如:
Dim hdbc As Long '連接句柄
rc = SQLAllocConnect(henv, hdbc) '獲取連接句柄
---- 2、 建 立 連 接。 這 個(gè) 步 驟 可 以 通 過(guò) 多 種 方 法 實(shí) 現(xiàn), 最 簡(jiǎn) 單 直 觀 的 方 法 是 調(diào) 用SQLConnect 函 數(shù)。 例 如:
Dim DSN As String, UID As String, PWD As String
DSN = "DataSourceName" 'ODBC數(shù)據(jù)源名稱
UID = "UserID" '用戶帳號(hào)
PWD = "Password" '用戶口令
rc = SQLConnect(hdbc, DSN, Len(DSN), UID,
Len(UID), PWD, Len(PWD)) '建立連接
---- 三、 存 取 數(shù) 據(jù)
---- 用 戶 對(duì)ODBC 數(shù) 據(jù) 源 的 存 取 操 作, 都 是 通 過(guò)SQL 語(yǔ) 句 實(shí) 現(xiàn) 的。 在 這 個(gè) 過(guò) 程 中, 應(yīng) 用 程 序 將 通 過(guò) 連 接 向ODBC 數(shù) 據(jù) 庫(kù) 提 交SQL 語(yǔ) 句, 以 完 成 用 戶 請(qǐng) 求 的 操 作。 具 體 步 驟 如 下:
---- 1、 調(diào) 用SQLAllocStmt 函 數(shù) 獲 取 語(yǔ) 句 句 柄。 例 如:
Dim hstmt As Long
rc = SQLAllocStmt(hdbc, hstmt)
---- 2、 執(zhí) 行SQL 語(yǔ) 句。 執(zhí) 行SQL 語(yǔ) 句 的 方 法 比 較 多, 最 簡(jiǎn) 單 明 了 的 方 法 是 調(diào) 用SQLAllocStmt 函 數(shù), 例 如:
Dim SQLstmt As String
SQLstmt = "SELECT * FROM authors"
rc = SQLExecDirect(hstmt, SQLstmt, Len(SQLstmt))
---- 四、 檢 索 結(jié) 果 集
---- 如 果SQL 語(yǔ) 句 被 順 利 提 交 并 正 確 執(zhí) 行, 那 么 就 會(huì) 產(chǎn) 生 一 個(gè) 結(jié) 果 集。 檢 索 結(jié) 果 集 的 方 法 有 很 多, 最 簡(jiǎn) 單 最 直 接 的 方 法 是 調(diào) 用SQLFetch 和SQLGetData 函 數(shù)。SQLFetch 函 數(shù) 的 功 能 是 將 結(jié) 果 集 的 當(dāng) 前 記 錄 指 針 移 至 下 一 個(gè) 記 錄,SQLGetData 函 數(shù) 的 功 能 是 提 取 結(jié) 果 集 中 當(dāng) 前 記 錄 的 某 個(gè) 字 段 值。 通 常 可 以 采 用 一 個(gè) 循 環(huán) 以 提 取 結(jié) 果 集 中 所 有 記 錄 的 所 有 字 段 值, 該 循 環(huán) 重 復(fù) 執(zhí) 行SQLFetch 和SQLGetData 函 數(shù), 直 至SQLFetch 函 數(shù) 返 回SQL_NO_DATA_FOUND, 這 表 示 已 經(jīng) 到 達(dá) 結(jié) 果 集 的 末 尾。
Dim ColVal As String * 225
ColVal = String(255, 0)
Do Until SQLFetch(hstmt) = SQL_NO_DATA_FOUND
rc = SQLGetData(hstmt, i, SQL_C_CHAR, ColVal,
Len(ColVal), SQL_NULL_DATA)
Loop
---- 五、 結(jié) 束 應(yīng) 用 程 序
---- 在 應(yīng) 用 程 序 完 成 數(shù) 據(jù) 庫(kù) 操 作, 退 出 運(yùn) 行 之 前, 必 須 釋 放 程 序 中 使 用 的 系 統(tǒng) 資 源。 這 些 系 統(tǒng) 資 源 包 括: 語(yǔ) 句 句 柄、 連 接 句 柄 和ODBC 環(huán) 境 句 柄。 完 成 這 個(gè) 過(guò) 程 的 步 驟 如 下:
---- 1、 調(diào) 用SQLFreeStmt 函 數(shù) 釋 放 語(yǔ) 句 句 柄 及 其 相 關(guān) 的 系 統(tǒng) 資 源。 例 如:rc = SQLFreeStmt(hstmt, SQL_DROP)
---- 2、 調(diào) 用SQLDisconnect 函 數(shù) 關(guān) 閉 連 接。 例 如:
rc = SQLDisconnect(hdbc)
---- 3、 調(diào) 用SQLFreeConnect 函 數(shù) 釋 放 連 接 句 柄 及 其 相 關(guān) 的 系 統(tǒng) 資 源。 例 如:
rc = SQLFreeConnect(hdbc)
---- 4、 調(diào) 用SQLFreeEnv 函 數(shù) 釋 放 環(huán) 境 句 柄 及 其 相 關(guān) 的 系 統(tǒng) 資 源, 停 止ODBC 操 作。 例 如:
rc = SQLFreeEnv(henv)
---- 此 外, 在 編 制 程 序 時(shí) 還 有 一 個(gè) 需 要 重 點(diǎn) 考 慮 的 問(wèn) 題, 這 就 是 錯(cuò) 誤 處 理。 所 有ODBC API 函 數(shù), 若 在 執(zhí) 行 期 間 發(fā) 生 錯(cuò) 誤, 都 將 返 回 一 個(gè) 標(biāo) 準(zhǔn) 錯(cuò) 誤 代 碼SQL_ERROR。 一 般 來(lái) 講, 在 每 次 調(diào) 用ODBC API 函 數(shù) 之 后, 都 應(yīng) 該 檢 查 該 函 數(shù) 返 回 值, 確 定 該 函 數(shù) 是 否 成 功 地 執(zhí) 行, 再 決 定 是 否 繼 續(xù) 后 續(xù) 過(guò) 程。 而 詳 細(xì) 的 錯(cuò) 誤 信 息, 可 以 調(diào) 用SQLError 函 數(shù) 獲 得。SQLError 函 數(shù) 將 返 回 下 列 信 息: 標(biāo) 準(zhǔn) 的ODBC 錯(cuò) 誤 狀 態(tài) 碼
ODBC 數(shù) 據(jù) 源 提 供 的 內(nèi) 部 錯(cuò) 誤 編 碼
錯(cuò) 誤 信 息 串
---- 簡(jiǎn) 單 應(yīng) 用 實(shí) 例
---- 本 實(shí) 例 將 編 制 一 個(gè) 客 戶 機(jī) 端VB 應(yīng) 用 程 序, 通 過(guò)Windows NT 局 域 網(wǎng) 查 詢 服 務(wù) 器 端MS SQL Server 6.5 樣 板 數(shù) 據(jù) 庫(kù)PUBS 中 的AUTHORS 數(shù) 據(jù) 表, 并 在 一 個(gè)Grid 控 件 中 顯 示 查 詢 結(jié) 果。 首 先, 使 用Windows 控 制 面 板 中 的ODBC 驅(qū) 動(dòng) 管 理 器 新 建 一 個(gè)ODBC 數(shù) 據(jù) 源, 定 義 數(shù) 據(jù) 源 名 稱 為ODBC_API_DEMO, 定 義 登 錄 數(shù) 據(jù) 庫(kù) 為PUBS, 其 它 信 息 應(yīng) 根 據(jù) 用 戶 的 環(huán) 境 正 確 設(shè) 置。 然 后, 啟 動(dòng)VB, 新 建 一 個(gè) 項(xiàng) 目Project1, 在 缺 省 窗 體Form1 中 加 入 一 個(gè)Grid 控 件Grid1、 兩 個(gè)CommandButton 控 件cmdQuery 和cmdClose, 在Project1 中 插 入 一 個(gè) 模 塊Module1, 將 前 面 列 舉 的 聲 明 語(yǔ) 句 加 入 其 中

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊
VLOOKUP函數(shù)
在表格或數(shù)值數(shù)組的首列查找指定的數(shù)值,并由此返回表格或數(shù)組中該數(shù)值所在行中指定列處的數(shù)值。
這里所說(shuō)的“數(shù)組”,可以理解為表格中的一個(gè)區(qū)域。數(shù)組的列序號(hào):數(shù)組的“首列”,就是這個(gè)區(qū)域的第一縱列,此列右邊依次為第2列、3列……。假定某數(shù)組區(qū)域?yàn)锽2:E10,那么,B2:B10為第1列、C2:C10為第2列……。
語(yǔ)法:
VLOOKUP(查找值,區(qū)域,列序號(hào),邏輯值)
“查找值”:為需要在數(shù)組第一列中查找的數(shù)值,它可以是數(shù)值、引用或文字符串。
“區(qū)域”:數(shù)組所在的區(qū)域,如“B2:E10”,也可以使用對(duì)區(qū)域或區(qū)域名稱的引用,例如數(shù)據(jù)庫(kù)或數(shù)據(jù)清單。
“列序號(hào)”:即希望區(qū)域(數(shù)組)中待返回的匹配值的列序號(hào),為1時(shí),返回第一列中的數(shù)值,為2時(shí),返回第二列中的數(shù)值,以此類推;若列序號(hào)小于1,函數(shù)VLOOKUP 返回錯(cuò)誤值 #VALUE!;如果大于區(qū)域的列數(shù),函數(shù)VLOOKUP返回錯(cuò)誤值 #REF!。
“邏輯值”:為T(mén)RUE或FALSE。它指明函數(shù) VLOOKUP 返回時(shí)是精確匹配還是近似匹配。如果為 TRUE 或省略,則返回近似匹配值,也就是說(shuō),如果找不到精確匹配值,則返回小于“查找值”的最大數(shù)值;如果“邏輯值”為FALSE,函數(shù) VLOOKUP 將返回精確匹配值。如果找不到,則返回錯(cuò)誤值 #N/A。如果“查找值”為文本時(shí),“邏輯值”一般應(yīng)為 FALSE 。另外:
·如果“查找值”小于“區(qū)域”第一列中的最小數(shù)值,函數(shù) VLOOKUP 返回錯(cuò)誤值 #N/A。
·如果函數(shù) VLOOKUP 找不到“查找值” 且“邏輯值”為 FALSE,函數(shù) VLOOKUP 返回錯(cuò)誤值 #N/A。
下面舉例說(shuō)明VLOOKUP函數(shù)的使用方法。
假設(shè)在Sheet1中存放小麥、水稻、玉米、花生等若干農(nóng)產(chǎn)品的銷售單價(jià):
A B
1 農(nóng)產(chǎn)品名稱 單價(jià)
2 小麥 0.56
3 水稻 0.48
4 玉米 0.39
5 花生 0.51
…………………………………
100 大豆 0.45
Sheet2為銷售清單,每次填寫(xiě)的清單內(nèi)容不盡相同:要求在Sheet2中輸入農(nóng)產(chǎn)品名稱、數(shù)量后,根據(jù)Sheet1的數(shù)據(jù),自動(dòng)生成單價(jià)和銷售額。設(shè)下表為Sheet2:
A B C D
1 農(nóng)產(chǎn)品名稱 數(shù)量 單價(jià) 金額
2 水稻 1000 0.48 480
3 玉米 2000 0.39 780
…………………………………………………
在D2單元格里輸入公式:
=C2*B2 ;
在C2單元格里輸入公式:
=VLOOKUP(A2,Sheet1!A2:B100,2,F(xiàn)ALSE) 。
如用語(yǔ)言來(lái)表述,就是:在Sheet1表A2:B100區(qū)域的第一列查找Sheet2表單元格A2的值,查到后,返回這一行第2列的值。
這樣,當(dāng)Sheet2表A2單元格里輸入的名稱改變后,C2里的單價(jià)就會(huì)自動(dòng)跟著變化。當(dāng)然,如Sheet1中的單價(jià)值發(fā)生變化,Sheet2中相應(yīng)的數(shù)值也會(huì)跟著變化。
其他單元格的公式,可采用填充的辦法寫(xiě)入。
VLOOKUP函數(shù)使用注意事項(xiàng)
說(shuō)到VLOOKUP函數(shù),相信大家都會(huì)使用,而且都使用得很熟練了。不過(guò),有幾個(gè)細(xì)節(jié)問(wèn)題,大家在使用時(shí)還是留心一下的好。
一.VLOOKUP的語(yǔ)法
VLOOKUP函數(shù)的完整語(yǔ)法是這樣的:
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
1.括號(hào)里有四個(gè)參數(shù),是必需的。最后一個(gè)參數(shù)range_lookup是個(gè)邏輯值,我們常常輸入一個(gè)0字,或者False;其實(shí)也可以輸入一個(gè)1字,或者true。兩者有什么區(qū)別呢?前者表示的是完整尋找,找不到就傳回錯(cuò)誤值#N/A;后者先是找一模一樣的,找不到再去找很接近的值,還找不到也只好傳回錯(cuò)誤值#N/A。這對(duì)我們其實(shí)也沒(méi)有什么實(shí)際意義,只是滿足好奇而已,有興趣的朋友可以去體驗(yàn)體驗(yàn)。
2.Lookup_value是一個(gè)很重要的參數(shù),它可以是數(shù)值、文字字符串、或參照地址。我們常常用的是參照地址。用這個(gè)參數(shù)時(shí),有兩點(diǎn)要特別提醒:
A)參照地址的單元格格式類別與去搜尋的單元格格式的類別要一致,否則的話有時(shí)明明看到有資料,就是抓不過(guò)來(lái)。特別是參照地址的值是數(shù)字時(shí),最為明顯,若搜尋的單元格格式類別為文字,雖然看起來(lái)都是123,但是就是抓不出東西來(lái)的。
而且格式類別在未輸入數(shù)據(jù)時(shí)就要先確定好,如果數(shù)據(jù)都輸入進(jìn)去了,發(fā)現(xiàn)格式不符,已為時(shí)已晚,若還想去抓,則需重新輸入。
B)第二點(diǎn)提醒的,是使用時(shí)一個(gè)方便實(shí)用的小技巧,相信不少人早就知道了的。我們?cè)谑褂脜⒄盏刂窌r(shí),有時(shí)需要將lookup_value的值固定在一個(gè)格子內(nèi),而又要使用下拉方式(或復(fù)制)將函數(shù)添加到新的單元格中去,這里就要用到“$”這個(gè)符號(hào)了,這是一個(gè)起固定作用的符號(hào)。比如說(shuō)我始終想以D5格式來(lái)抓數(shù)據(jù),則可以把D5弄成這樣:$D$5,則不論你如何拉、復(fù)制,函數(shù)始終都會(huì)以D5的值來(lái)抓數(shù)據(jù)。
3.Table_array是搜尋的范圍,col_index_num是范圍內(nèi)的欄數(shù)。Col_index_num 不能小于1,其實(shí)等于1也沒(méi)有什么實(shí)際用的。如果出現(xiàn)一個(gè)這樣的錯(cuò)誤的值#REF!,則可能是col_index_num的值超過(guò)范圍的總字段數(shù)。
二.VLOOKUP的錯(cuò)誤值處理。
我們都知道,如果找不到數(shù)據(jù),函數(shù)總會(huì)傳回一個(gè)這樣的錯(cuò)誤值#N/A,這錯(cuò)誤值其實(shí)也很有用的。比方說(shuō),如果我們想這樣來(lái)作處理:如果找到的話,就傳回相應(yīng)的值,如果找不到的話,我就自動(dòng)設(shè)定它的值等于0,那函數(shù)就可以寫(xiě)成這樣:
=if(iserror(vlookup(1,2,3,0))=true,0,vlookup(1,2,3,0))
這句話的意思是這樣的:如果VLOOKUP函數(shù)返回的值是個(gè)錯(cuò)誤值的話(找不到數(shù)據(jù)),就等于0,否則,就等于VLOOKUP函數(shù)返回的值(即找到的相應(yīng)的值)。
這里面又用了兩個(gè)函數(shù)。
第一個(gè)是iserror函數(shù)。它的語(yǔ)法是iserror(value),即判斷括號(hào)內(nèi)的值是否為錯(cuò)誤值,如果是,就等于true,不是,就等于false。
第二個(gè)是if函數(shù),這也是一個(gè)常用的函數(shù)的,后面有機(jī)會(huì)再跟大家詳細(xì)講解。它的語(yǔ)法是if(條件判斷式,結(jié)果1,結(jié)果2)。如果條件判斷式是對(duì)的,就執(zhí)行結(jié)果1,否則就執(zhí)行結(jié)果2。舉個(gè)例子:=if(D2=””,”空的”,”有東西”),意思是如D2這個(gè)格子里是空的值,就顯示文字“空的”,否則,就顯示“有東西”。(看起來(lái)簡(jiǎn)單吧?其實(shí)編程序,也就是這樣子判斷來(lái)判斷去的。)
三.含有VLOOKUP函數(shù)的工作表檔案的處理。
一般來(lái)說(shuō),含有VLOOKUP函數(shù)的工作表,如果又是在別的檔案里抓取數(shù)據(jù)的話,檔案往往是比較大的。尤其是當(dāng)你使用的檔案本身就很大的時(shí)候,那每次開(kāi)啟和存盤(pán)都是很受傷的事情。
有沒(méi)有辦法把文件壓縮一下,加快開(kāi)啟和存盤(pán)的速度呢。這里提供一個(gè)小小的經(jīng)驗(yàn)。
在工作表里,點(diǎn)擊工具——選項(xiàng)——計(jì)算,把上面的更新遠(yuǎn)程參照和儲(chǔ)存外部連結(jié)的勾去掉,再保存檔案,則會(huì)加速不少,不信你可以試試。
下面詳細(xì)的說(shuō)一下它的原理。
1.含有VLOOKUP函數(shù)的工作表,每次在保存檔案時(shí),會(huì)同時(shí)保存一份其外部連結(jié)的檔案。這樣即使在單獨(dú)打開(kāi)這個(gè)工作表時(shí),VLOOKUP函數(shù)一樣可以抓取到數(shù)值。
2.在工作表打開(kāi)時(shí),微軟會(huì)提示你,是否要更新遠(yuǎn)程參照。意思是說(shuō),你要不要連接最新的外部檔案,好讓你的VLOOKUP函數(shù)抓到最新的值。如果你有足夠的耐心,不妨試試。
3.了解到這點(diǎn),我們應(yīng)該知道,每次單獨(dú)打開(kāi)含有VLOOKUP函數(shù)的工作表時(shí),里面抓取外部檔案的數(shù)值,只是上次我們存盤(pán)時(shí)保存的值。若要連結(jié)最新的值,必須要把外部檔案同時(shí)打開(kāi)。
添加回答
舉報(bào)