我=VLOOKUP()在作業簿中有多個公式。現在它們看起來如下:
=VLOOKUP(CELL_REFERENCE;BOOK_NAME_AND_COLUMNS;COLUMN_NUMBER;0).
我需要找到一個帶有 VBA 或 Excel 內置函式的解決方案來替換所有 VLOOKUP 公式,使其看起來像這樣,但保留所有單元格參考和插入的數字:
=VLOOKUP(VALUE(CELL_REFERENCE);BOOK_NAME_AND_COLUMNS;COLUMN_NUMBER;0)
CELL_REFERENCE、BOOK_NAME_AND_COLUMNS、COLUMN_NUMBER 可以因公式而異,例如:
CELL_REFERENCE - A1,
BOOK_NAME_AND_COLUMNS - LIB!$A:$J;
COLUMN_NUMBER - 3.
我嘗試使用帶有替換內置函式的通配符,但它沒有用。有什么方法可以使用 VBA 或我不知道的 excel 內置函式來實作嗎?
uj5u.com熱心網友回復:
修改所有作業表中的公式
Option Explicit
Sub ReplaceVLookup()
Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
Dim ws As Worksheet
Dim rg As Range
Dim fCell As Range
Dim FirstAddress As String
Dim cPos As Long ' comma
Dim lpPos As Long ' left parentheses
Dim fString As String
Dim lString As String
Dim rString As String
Application.ScreenUpdating = False
For Each ws In wb.Worksheets
Set rg = ws.UsedRange
Set fCell = rg.Find("=VLOOKUP(*", , xlFormulas, xlWhole)
If Not fCell Is Nothing Then
FirstAddress = fCell.Address
Do
fString = fCell.Formula
If InStr(fString, "=VLOOKUP(VALUE") <> 1 Then
cPos = InStr(fString, ",")
lString = Left(fString, cPos - 1)
rString = Right(fString, Len(fString) - cPos 1)
lpPos = InStr(fString, "(")
fCell.Formula = Left(lString, lpPos) & "VALUE(" _
& Mid(lString, lpPos 1, cPos - lpPos) & ")" & rString
End If
Set fCell = rg.FindNext(fCell)
Loop Until fCell.Address = FirstAddress
End If
Next ws
Application.ScreenUpdating = True
MsgBox """VALUE"" added.", vbInformation
End Sub
uj5u.com熱心網友回復:
相信你可以在這里找到答案:
https://stackoverflow.com/a/39874227/15888753
答案之一必須適合您,如果它不是我參考的答案,請嘗試最受好評的答案(似乎很復雜)。
希望這會有所幫助,我試圖找到一個更簡單的答案,但沒有成功。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/394317.html
上一篇:為什么我不能多次處理相同的錯誤?
下一篇:用變化的變數概括范圍
