簡體   English   中英

如何將Text值單元格中的公式轉換為另一個工作簿?

[英]How to a formula in a Text value cell to another workbook?

我有一個數據庫轉儲我需要定期格式化。 我正在嘗試為此創建一個宏,並且大約有90%....數據轉儲在其他地方的CSV中。 我的宏位於工作簿(Toolwb)中,包含幾個宏,一個查找表單(LookUpSheet),以及一個包含一些公式的表(FormulaSheet)。

我遇到的問題是我從我的LookUpSheet上使用VLOOKUP FormulaSheet復制我的公式。 由於我在不同的工作簿上運行代碼,我需要復制公式,並在其中引用Toolwb ...而且從我可以看出,Toolwb不喜歡在公式中指定Toolwk的公式。 它只是編輯它們然后在vba將其復制到數據轉儲時中斷。 因此,為了解決這個問題,我將單元格更改為Text類型而不是一般。 完善! 復制好....但是......我似乎無法在數據轉儲單元格中獲得“刷新”公式。 我必須打開單元格並按Enter鍵以刷新並評估數據。

我在粘貼后嘗試更改單元格General,然后將其設置為自動計算。 我也試過了公式刷新按鈕。 我錯過了什么?

我會高興地從vba而不是單元格粘貼這個,但我很難在語法中獲得引號。

=RIGHT(VLOOKUP(VALUE(CONCATENATE(B2,".",IF(LEN(C2)<2,CONCATENATE("0",C2),C2))),'[Toolwb]LookUpSheet'!$C$2:$D$4419,2,TRUE),LEN(VLOOKUP(VALUE(CONCATENATE(B2,".",IF(LEN(C2)<2,CONCATENATE("0",C2),C2))),'[Toolwb.xlsm]LookUpSheet'!$C$2:$D$4419,2,TRUE))-6)
  • "." 可以用CHAR(46)代替。
  • CONCATENATE(0,C2)CONCATENATE("0",C2) 結果仍然是一個前導零的字符串。
  • .Address(External:=True)將生成一個完全限定的工作簿/工作表/范圍引用作為包含任何必要標點符號的地址字符串。
  • 我有點不清楚為什么$C$2:$D$4419需要指定而不是$C:$D
  • IF(LEN(C2)<2,CONCATENATE("0",C2),C2)更簡單為RIGHT("00"&C2, 2)

碼:

dim Toolwb as workbook, Toolws as worksheet, Toolrng as range

set Toolwb = workbooks("some workbook")
set Toolws = Toolwb.worksheets("LookUpSheet")
set Toolrng = Toolws.Range("C2:D4419")

Range("A1").Formula = _
  "=RIGHT(VLOOKUP(VALUE(CONCATENATE(B2, CHAR(46), RIGHT(""00""&C2, 2))), " & Toolrng.Address(External:=True) & ", 2, TRUE), LEN(VLOOKUP(VALUE(CONCATENATE(B2, CHAR(46), RIGHT(""00""&C2, 2))), " & Toolrng.Address(External:=True) & ", 2, TRUE))-6)"

我沒有測試過,但它看起來不錯。

您也可以使用REPLACE嘗試這種改編,刪除前6個字符並有效地將您的公式減半。

Range("A1").Formula = _
  "=REPLACE(VLOOKUP(VALUE(CONCATENATE(B2, CHAR(46), RIGHT(""00""&C2, 2))), " & Toolrng.Address(External:=True) & ", 2, TRUE), 1, 6, """")"

里卡多在評論中為我解決了這個問題。

“你有沒有試過VBA newWorkbook.Sheets(”Sheet1“)。范圍(”A2“)。公式= formulaWorkbook.Sheets(”FormulaSheet“)。公式”

工作得很完美!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM