
我將有關每日貨幣匯率的資訊從外部網站匯入到 Excel。
我每天都會在一些公式中使用匯率。問題是,當第二天到來時,匯率發生變化,所有公式都被更改,我希望僅更改與當前日期相關的行中的公式。對於昨天,我想保留昨天的匯率。
如果滿足條件,是否有辦法阻止公式更新?這種情況下的條件是公式所屬的日期是否小於 TODAY()。
答案1
是的,無需 VBA 甚至極端措施即可實現此結果。
然而,不是以您所想的方式。我確信這種方式正是你的想法所在,但你並不拘泥於任何特定的步驟或條件。所以...
一種方法是新增或使用包含資料擷取日期的資料列(如果您已經有)。一旦你有了這個,你就可以做兩件事中的任何一件事,甚至更多,儘管我將重點放在這兩件事上。
IF()
第一個是使用匯率值儲存格的簡單公式。例如,如果您的日期列是 A 列,您的計算列是 B 列,且儲存格 $M$1 中的每日變更匯率,則可能如下所示:
=IF(A1<TODAY(),B1,IF(A1>TODAY(),"",2000*$M$1))
在 A 列中的日期,工作公式將進行計算。在接下來的日子裡,它不會。隨著今天匹配的日期在列中越來越遠,沒有任何顯示 ( ""
) 的新單元格將正確計算,然後加入它們上面的其他單元格,這些單元格不會隨著日期的推移而重新計算。
但是,如果您透過輸入儲存格(例如,)F2-Edit
,然後按Enter 強制該儲存格重新計算,則該儲存格將重新計算並失敗,從而導致“0”,這就是如果由於公式無法計算而導致Excel 的結果。如果您不小心這樣做,UNDO
( Ctrl-Z
) 將使您重新開始營業。如果在按 Enter 之前註意到,只需按 ESC 即可保留內容。格式更改不會導致問題。
所以,只要小心一點,它可能會起作用。誰想要那個?好吧,有人沒有更好的辦法。
第二種方法是更好的方法。如果建立一個表,在第 1 列中包含每日日期,在第 2 列中包含每個日期的匯率,那麼操作和管理會更容易。或者可能會使用許多已填入第 1 列的未來日期,並且只需每天新增新的匯率。
然後,公式將在第 1 列中找到您選擇的今天日期 ( TODAY()
),在第 2 列中尋找目前匯率。
易於嫁接,放置在隱藏在某處的一些幫助頁面上。那麼你的公式就不需要奇怪的技巧了。他們可以參考日期列中的日期進行查找,並且始終可以找到該日期的匯率,即使是幾年後。不用擔心與循環相互作用。
這種技巧對於表格也很方便。表格的一個優點是隨著每一行的添加,公式如何向下填充。然而,表格的一個弱點是隨著每一行的添加,公式如何向下填充...
如果您需要變更公式,在目前行中保留舊格式,但在新增資料行時向下使用新格式,則會遇到問題。表格就是不這樣做。改變你想要的所有公式,但舊公式不斷出現新的公式。
是的,從技術上講,可以進行此類更改,但所有描述的方法都不能按描述的方式工作。例如,假設如果連續更改四行,則它將成為新的公式。根據我的經驗,我從未見過在 Excel 放棄並使用新公式之前更改的行數少於 6 行,通常需要更改 10-30 行。所有這些都可以做到,但是......不,這在實踐中是行不通的。另一種方法是更改為範圍,然後返回表格。這會產生問題,儘管它們大多是次要的,但它將第一行公式作為主公式,並且不太可能是新公式的一個,所以...
但是可以編寫許多公式,以允許在表格之外更改它們的工作方式。例如,您的匯率。在表中,只有對某個值的引用,也許是一個命名範圍,也許是一大塊公式。此命名範圍或區塊可以指保存不斷變化的匯率的資料範圍(或表)。因此,可以使用新的匯率,而無需更改使用它的表格公式。更改表格公式沒有任何困難。需要記住的事。
但它也顯示了設定數據(尤其是更改數據和添加數據)的頻率,以預測這些事情可以使各個位元易於更改和使用。