如何動態格式化谷歌表格中的貨幣?
當前資料
| 平臺 | 貨幣 | 預算 | 花費金額 |
|---|---|---|---|
| 抖音 | 美元 | 866.98 | 690.62 |
| 抖音 | 印尼盾 | 6317.89 | 6317.89 |
| DV360 | 泰銖 | 3739.66 | 3438.48 |
期望的輸出
| 平臺 | 貨幣 | 預算 | 花費金額 |
|---|---|---|---|
| 抖音 | 美元 | 866.98 美元 | 690.62 美元 |
| 抖音 | 印尼盾 | 6317.89 印尼盾 | 6317.89 印尼盾 |
| DV360 | 泰銖 | 3739.66 泰銖 | 3438.48 泰銖 |
我沒有使用谷歌應用程式腳本和手動格式化(因為我有 1000 行具有多種貨幣的資料),而是在谷歌表格中尋找單元格公式方法。
通過參考“貨幣”中的單元格,“預算”和“支出金額”中的值將被相應地格式化。
uj5u.com熱心網友回復:
如果您使用的是 Excel,那么直接的答案就是使用條件格式。但是,您可能知道,Google 表格不允許將條件格式應用于Number Format. 這使您的選擇有限。您的帖子未包含的一件事是您可能希望保留 Bugdet 和支出列中的值。這使得不可能用公式來完成(如果有人知道我不知道的事情,很高興被證明是不正確的......)。
使資料按您顯示的方式顯示的唯一方法是使用公式連接或連接單元格。請參閱帶有 JoinValues 選項卡的樣本表。
更好的資料結構
不是很重要,但您面臨的真正問題是您的資料不是最佳結構。您的報告要求很正常,您只需要取消資料透視即可。這意味著您將有一個包含值/金額的列,但您將為 ACTUAL 或 BUDGET 添加一列(此欄位通常稱為version或category用于提供此類資訊的工具,如 BPC、Essbase、Tagetik)。這實際上會使數量或行數增加一倍,但會為您提供許多旋轉選項和計算方法。查看相同的電子表格了解未透視資料的外觀。
谷歌腳本
雖然問題確實明確指出沒有 Google 腳本,但這似乎是按行完成動態數字格式化的唯一方法。對于發現此問題并愿意接受腳本撰寫的任何人,下面的此程序將完成此示例表中所需的任務。
/** @OnlyCurrentDoc*/
function fixFormat() {
const currencyRange = "b2:b";// column b
const valueRange = "c2:d"; //number columns
const sheetName = "JoinValues";
const dataSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var valueFormats = dataSheet.getRange(valueRange).getNumberFormats();
var allCurrencies = dataSheet.getRange(currencyRange).getValues();
for (var i = 0; i < allCurrencies.length; i ) {
var currencyID = allCurrencies[i][0];
if (currencyID != '') {
for (var c = 0; c < valueFormats[i].length; c ) {
valueFormats[i][c] = '"' currencyID ' "' valueFormats[i][c]
}
} else {
break;
}
}
dataSheet.getRange(valueRange).setNumberFormats(valueFormats);
}
uj5u.com熱心網友回復:
如果您正在尋找更簡單的東西,可以嘗試以下解決方法:
創建一個“商店”表,其中 列的格式適用于所有可能的貨幣。請注意,列標題是稍后的“鍵”。
在您的主作業表中,使用“過濾器”功能根據“貨幣”單元格作為鍵獲得正確的金額。
該函式將相應地過濾相應的單元格。試試吧!
您也可以對該值進行操作。只是指出這一點,這似乎就是為什么您更喜歡貨幣和數字的“格式”而不是“CONCAT”的原因。
此外,如果您希望以您所描述的方式使用格式,即“USD xxx”而不是“$ xxx”,您可以在“自定義貨幣”下進行更改。只需用“USD”、“IDR”等替換他們那里的任何標志。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/452742.html
