如何在複製公式到另一個活頁簿,同時變更參照位置的欄位 (版本excel2003)

如何在複製公式到另一個活頁簿,同時變更參照位置的欄位

大家好
事情是這樣的
因為需要比對去年與今年的業績所以必須將每日公式貼到下一個頁籤中
如何在複製公式到另一個活頁簿,同時變更參照位置的欄位 (版本excel2003)
內文的公式大概是這樣的
='C:\My Documents\Daily\[106年業績.xls]02'!$H4
='C:\My Documents\Daily\[106年業績.xls]02'!$H5
='C:\My Documents\Daily\[106年業績.xls]02'!$H6
最後的數字部分依序往下加
要貼到下一個活頁簿裡然後將選取的區域取代應對欄位
='C:\My Documents\Daily\[106年業績.xls]02'!$I4
='C:\My Documents\Daily\[106年業績.xls]02'!$I5
='C:\My Documents\Daily\[106年業績.xls]02'!$I6
如何在複製公式到另一個活頁簿,同時變更參照位置的欄位 (版本excel2003)
目前這個部份都要人工去一列一列取代,請問有比較簡便的做法嗎?

一開始是想到看可不可以用vba來處理,但是不太會使用
目前想到幾個比較有問題的部分
首先是要怎麼把公式複製進剪貼簿
複製進去後可以用right函數把$後的英文字取出在+1上去
這樣H就會變成I了

不過會有到第10格right取的位置就不對了的問題
='C:\My Documents\Daily\[106年業績.xls]02'!$H4
='C:\My Documents\Daily\[106年業績.xls]02'!$H10
(必須用圈選區域全部複製再貼上的原因,是因為中間還有部分加總的區域)

不過就算取英文的這個部分解決了還是有 Z+1=AA的問題
我是有查到一個別人寫好的,不過我不會調用function

'*****************************************************************************
'將Excel中列數轉換為列名(如27列--->AA列)
'參數:var 列數
'返回:列名 string
'*****************************************************************************
Public Function ChgNumToABC(ByVal var As Integer) As String
Dim res As String
Dim remainder As Integer '餘數
Dim quotient As Integer '商

remainder = var Mod 26

If remainder = 0 Then
var = var - 26
remainder = 26
End If

quotient = var \ 26

If quotient <> 0 Then
res = ChgNumToABC(quotient)
End If

ChgNumToABC = res & Chr(remainder + 65 - 1)
End Function

有人可以指導一下該如何做處理嗎?

附件為實際檔案(當然後面的天數先刪除了)
實際上操作的具體動作是把sheet"01"的C4:D45複製到"02"的C4:D45
然後對"02"做兩次取代(圈選區域)
把$C改成$D再把$B改成$C
然後後面的每一天都重覆這個動作
所以會出現要把$Z取代成$AA的情況

附加壓縮檔: 201802/mobile01-51f6e96d539790a98cf5cad719c08b9b.zip
2018-02-02 2:25 發佈
我找個時間來試試看你說的公式
感謝你的回覆

;===================================================
你好,其實我沒有看很懂,不過看起來應該是我所出提出的問題沒講清楚


實際上的操作應該是
一個月有幾天就有幾天的活頁簿
像上述是2月的業績比對所以就有28個活頁簿
C的欄位與D的欄位不同檔案的資料
但是因為每隔一天的資料欄位就往後移一格
以C列為例,操作人員其實是將1號活頁簿的C、D列複製起來,貼到2號活頁簿C、D列
='C:\My Documents\Daily\[106年業績.xls]02'!$C4 ='C:\My Documents\Daily\[107年業績.xls]02'!$B4
='C:\My Documents\Daily\[106年業績.xls]02'!$C5 ='C:\My Documents\Daily\[107年業績.xls]02'!$B4
='C:\My Documents\Daily\[106年業績.xls]02'!$C6 ='C:\My Documents\Daily\[107年業績.xls]02'!$B4



複製到02活頁簿

然後利用2次取代



出來的結果會向下面這樣(必須先將C改成D才能把B改成C,才不會造成兩列都變成C再被改成D)
='C:\My Documents\Daily\[106年業績.xls]02'!$D4 ='C:\My Documents\Daily\[107年業績.xls]02'!$C4
='C:\My Documents\Daily\[106年業績.xls]02'!$D5 ='C:\My Documents\Daily\[107年業績.xls]02'!$C4
='C:\My Documents\Daily\[106年業績.xls]02'!$D6 ='C:\My Documents\Daily\[107年業績.xls]02'!$C4

然後重複上述作業到月底
所以其實不是在同一個活頁簿裡做操作
而是C列抓取一個檔案,D列抓取一個檔案,每天的活頁簿抓取不同的欄位(往後遞增)
我的作法,概念是在一個活頁簿中,將所有公式都修改好後,再貼回要套用公式的工作表

例如:A欄的公式,貼回工作表名稱為「01」的某一欄
   B欄的公式,貼回工作表名稱為「02」的某一欄
   以下類推

joblyc017 wrote:
我的作法,概念是在一個活頁簿中,將所有公式都修改好後,再貼回要套用公式的工作表

例如:A欄的公式,貼回工作表名稱為「01」的某一欄
   B欄的公式,貼回工作表名稱為「02」的某一欄
   以下類推

其實我還是沒搞懂你所謂的在一個活頁簿中改好再貼去新的工作表
如果是這樣的話,跟原先的工作方式其實是差不多的
整列複製到新活頁簿,然後取代所有的應對欄位 $B > $C
不過還是學到了一些新的東西,感謝你的回覆。

wei9133 wrote:
目前這個部份都要人工去一列一列取代,請問有比較簡便的做法嗎?
一開始是想到看可不可以用vba來處理,但是不太會使用
目前想到幾個比較有問題的部分
首先是要怎麼把公式複製進剪貼簿
複製進去後可以用right函數把$後的英文字取出在+1上去
這樣H就會變成I了
不過會有到第10格right取的位置就不對了的問題
='C:\My Documents\Daily\[106年業績.xls]02'!$H4
='C:\My Documents\Daily\[106年業績.xls]02'!$H10
(必須用圈選區域全部複製再貼上的原因,是因為中間還有部分加總的區域)
不過就算取英文的這個部分解決了還是有 Z+1=AA的問題
我是有查到一個別人寫好的,不過我不會調用function


引述的紅字,是樓主起初所述的轉換問題,故解法是針對此部分,亦可套用至VBA邏輯
若工作表號碼與位移欄數,有規則性,可用INDEX函數、搭配SHEET函數,詳下圖:
公式詳解,請參考:https://goo.gl/k2B4Nf

內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?