返回列表 上一主題 發帖

[發問] 引用A工作表值的公式語法

[發問] 引用A工作表值的公式語法

未命名.png
2021-1-8 23:27

測試檔︰ 引用A工作表值的公式語法.rar (179.22 KB)
想將A工作表的B2:S51,V2:AM51,AP2:BG51,BJ2:CA51的公式值,
以公式A,公式B,公式C,公式D等4個模組內的公式值,
各貼上B105:AX122;B155:AX172;B205:AX222;B255:AX272(四個區段各18列)
請詳見︰(2021-01-05)_效果檔

請問︰
公式A,公式B,公式C,公式D等4個模組內的語法,應該如何編寫?
謝謝!

PS︰有預留1個CSV檔以利測試用。

因為不懂怎麼引用其它的工作表(EX:A!)資料,所以只要是能引用公式達到如效果檔的答案即可~
無論是直接將公式放在模組1內或引用公式A,公式B,公式C,公式D等4個模組皆可。
謝謝!

TOP

本帖最後由 ziv976688 於 2021-1-9 14:06 編輯

抱歉!公式的註解有筆誤~
公式值複製轉貼上
修正為
公式值複製轉貼上。
謝謝!

TOP

本帖最後由 n7822123 於 2021-1-9 15:23 編輯

回復 1# ziv976688

想將A工作表的B2:S51,V2:AM51,AP2:BG51,BJ2:CA51的公式值
以公式A,公式B,公式C,公式D等4個模組內的公式值
各貼上B105:AX122;B155:AX172;B205:AX222;B255:AX272(四個區段各18列)。

公式公式,請盡量避免用 公式值 這種敘述.......

很容易混淆額造成誤會,把你的敘述改成如下,就清楚多了

想將'T1'的'A'工作表的B2:S51,V2:AM51,AP2:BG51,BJ2:CA51的 ""
以公式A,公式B,公式C,公式D等4個模組內的 "公式"
各貼上'總覽'的B105:AX122;B155:AX172;B205:AX222;B255:AX272(四個區段各18列)。


用"公式"去取其他活頁簿的儲存格資料 要多寫該活頁簿的路徑+檔名

如下是取A1儲存格範例

='C:\使用者們\秘密的使用者\桌面\引用A工作表值的公式語法\[49遺漏刪_空數(VBA)_T1.xls]A'!$A$1

光一個儲存格就要寫這麼長!,如果你的A~D都這樣寫,公式會變得更難閱讀...還有超出 255 字元的問題

我個人是很少用VBA 去寫 儲存格公式的,尤其像你這種貼完公式後,還要馬上轉成值的~

這種在程式執行過程中,不能關掉公式自動計算(一關掉就取不到值)

但是不關掉,VBA程式每對任意一個儲存格的內容做變更,就會自動觸發重算整個工作表

會使得效率變的比較低,遇到 資料量大的情況,就會很卡!

而且你的東西看起來越來越複雜了.........建議你要學些VBA,做簡單的計算(捨棄公式)

扯遠了,上面的方式寫起來麻煩,公式也會讓人難以理解

比較簡單的做法是把A 工作表 Copy到 產生出來的"總覽"活頁簿

這樣"總覽"活頁簿的公式,要取A表資料,就不再是 "跨活頁簿" 了

再貼上公式 > 轉值,這樣一來你的公式 完全不用修改

最後"總覽"活頁簿要關閉前,再刪除A表即可

檔案如下



引用A工作表值的公式語法-OK.rar (200.38 KB)
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

回復 4# n7822123
n大 : 您好!
我也很想學VBA,但雙北市都沒有補習班(有詢問過"巨匠"和"聯成")開班教授VBA課程(其它有開班的似乎都在中南部);
有想上網學習,但卻又是有看沒有懂>*<
還好!這已經是最後的步驟~需求檔終於"完成了"!

謝謝您一再的熱心幫忙和耐心指導與說明~感恩(鞠躬)~~~

TOP

回復 4# n7822123
n大 : 您好!
不好意思,假設"A"工作表內容不變時~
請問 : 能按1次執行鍵,執行多個CSV檔案嗎 ?
如果可以,請問程式碼要如何增修?
如果不可行,就以目前按1次執行鍵執行1個CSV檔案即可。
謝謝您

TOP

本帖最後由 n7822123 於 2021-1-9 20:54 編輯

回復 6# ziv976688

暈倒,忘記你主程式還在 Dir當中,還沒搜完呢

Dir 不能用了,改一下下面的程式

原本


Sub 複製A表到總覽()
總覽_Nm$ = Dir(Module1.NewName)
With Workbooks(總覽_Nm)
    ThisWorkbook.Sheets("A").Copy After:=.Sheets(.Sheets.Count)
    .Sheets(1).Activate   '回到資料檔
End With
End Sub

Sub 於總覽刪除A表()
Application.DisplayAlerts = False
總覽_Nm$ = Dir(Module1.NewName)
Workbooks(總覽_Nm).Sheets("A").Delete
End Sub


改為

Sub 複製A表到總覽()
總覽_Nm$ = Mid(Module1.NewName, InStrRev(Module1.NewName, "\") + 1)
With Workbooks(總覽_Nm)
    ThisWorkbook.Sheets("A").Copy After:=.Sheets(.Sheets.Count)
    .Sheets(1).Activate   '回到資料檔
End With
End Sub

Sub 於總覽刪除A表()
Application.DisplayAlerts = False
總覽_Nm$ = Mid(Module1.NewName, InStrRev(Module1.NewName, "\") + 1)
Workbooks(總覽_Nm).Sheets("A").Delete
End Sub


引用A工作表值的公式語法-OK2.rar (209.33 KB)
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

本帖最後由 ziv976688 於 2021-1-9 22:00 編輯

回復 7# n7822123
n大 : 您好!
全OK了!
萬分感激您的熱心幫忙和耐心指導~受惠良多~感恩再感恩~~~~~ ~~~

PS : 執行40個檔案(全部需求的公式都放進去~482列公式)~耗時51秒~也不算很慢~謝謝您

TOP

A表既是共用的, 增個AAA表取公式及值, 直接貼上即可,
應不須每個檔案都加載一次公式吧!

引用A工作表的公式值_01.rar (216.57 KB)

TOP

本帖最後由 n7822123 於 2021-1-10 13:09 編輯

回復 9# 准提部林

還是準大厲害~~又把程式簡化了~ , 程式效率會在UP

如果批次執行49個檔案,A表內容都不會變,公式也是固定的

那算出來的值也不會變,確實不用算那麼多次

在迴圈外算出來一次即可,之後每個檔案都只要複製該值~

那4個公式A~D,我原本也想要像準大那樣合併寫,只改區域範圍

但是考量到需求者不擅長VBA,所以我就盡量不去動了

程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

        靜思自在 : 有智慧才能分辨善惡邪正;有謙虛才能建立美滿人生。
返回列表 上一主題