簡體   English   中英

Excel VBA - 如何將單元格引用更改為倒數第二列和最后一列

[英]Excel VBA - How to change a cell reference to the second last and last column

我的第一列由貨幣名稱組成,列數據是每月匯率(第一行是月份名稱)。

每個月,我都會添加一個包含最新匯率的新列。 我需要將上個月匯率和本月匯率的單元格引用修改為表格的倒數第二列和最后一列。 有任何代碼嗎?

謝謝

lLastColumn = Cells(1, Columns.Count).End(xlToLeft).Column

假設 header 在第一行,這將給出最后一列。 否則,相應地更改第一個參數

Columns.Count給出工作表中的總列數(在新的 Excel 格式中為 16384)

Cells(1, Columns.Count)將給出第一行最后一列的單元格范圍

Cells(1, Columns.Count).End(xlToLeft)將給出第一行中最后一個非空白列的范圍。 它模擬了 Ctrl+Left 鍵

最后, Cells(1, Columns.Count).End(xlToLeft).Column將給出 header 中最后一列的列號

然后,您可以使用 Cells(i, lLastColumn) 引用最后一列中的其他數據

你不需要代碼。 只需對您的設置進行很小的更改,您就可以使用此 function。

=INDEX(Sheet1!$A$1:$ZZ$1000, MATCH($A3,Sheet1!$A:$A,0),MATCH(MAX(Sheet1!$1:$1),Sheet1!$1:$1,0))

所需的更改是在工作表的第一行輸入日期。 (我將其稱為Sheet1 ,但它可以是任何名稱。)要制作像“一月”這樣的標題,請輸入 1/1/2021 並將單元格格式化為自定義mmmm 使用mmm yy格式顯示“Jan 21”等。在第一列中有這樣的日期 - 即 B 列 - 使用此公式編寫后續列標題: =EDATE(B1,1)並復制到右側。

代替Sheet1:$A$1:$ZZ$1000我將使用動態命名范圍。 我會使用該范圍的一部分或獨立聲明的第二個命名范圍,而不是Sheet1:$1:$1)但這在很大程度上是一個品味問題。

現在, MAX(Sheet1:$1:$1)返回第 1 行中最大(最新)的日期。 MATCH(MAX(Sheet1:$1,$1):Sheet1,$1:$1,0)返回該日期的列, MATCH(MAX(Sheet1:$1,$1):Sheet1,$1:$1,0)-1將是前一個月的列。

MATCH($A2,Sheet1:$A,$A,0)返回 Sheet1 的 A 列中 A2 匹配項的行號。 當然,這就是您擁有貨幣的地方,其中一種貨幣必須在您擁有公式的工作表的 A2 中,而 INDEX 指定所有該工作表時不能在同一張工作表上。 因此,該公式將返回最新列的比率。 當您添加另一列時,公式會自動采用最新的。

暫無
暫無

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

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