背景:客戶財務部需要貨品帶完整科目信息的數據,但是在Netsuite系統中,貨品僅顯示末級科目名稱,無法直接導出客戶所需樣式。
從Netsuite中導出的數據格式。把“成本賬戶”/“資產賬戶”/“收入賬戶”三列轉換為下圖的帶科目的形式
客戶實際需要的數據格式
解決方案:
1.使用excel的IFS公式多條件判斷,寫好條件后填充即可,公式如下:
=IFS(G2="零部件c","6401.01.05 主營業務成本 : 進貨成本 : 零部件c",G2="石英表c","6401.01.02 主營業務成本 : 進貨成本 : 石英表c",G2="表帶C","6401.01.08 主營業務成本 : 進貨成本 : 表帶C",
G2="品牌表C","6401.01.10 主營業務成本 : 進貨成本 : 品牌表C",G2="表盒C","6401.01.06 主營業務成本 : 進貨成本 : 表盒C",G2="機械表C","6401.01.03 主營業務成本 : 進貨成本 : 機械表C")
方法比較實用,復雜度不高。
2.嘗試使用python的pandas讀取excel后再對數據進行操作,以下代碼為簡版:
import pandas as pd from pandas import DataFrame path = r'C:\Users\Shawn\Desktop\mydemo\貨品科目.xlsx' #讀取excel數據 data = pd.read_excel(path, sheet_name='Sheet1', dtype=object) #科目列,替換末級科目名稱為科目+科目名稱 data['成本賬戶'][data['成本賬戶'] == '零部件c'] = '6401.01.05 主營業務成本 : 進貨成本 : 零部件c' data['資產賬戶'][data['資產賬戶'] == '零部件z'] = '1405.05.01 庫存商品 : 零部件 : 零部件z' data['收入賬戶'][data['收入賬戶'] == '零部件L'] = '6001.03 主營業務收入 : 零部件L' print(data) #輸出數據為excel DataFrame(data).to_excel(r'C:\Users\Shawn\Desktop\mydemo\subject_demo.xlsx', sheet_name='Sheet1', index=False, header=True)
參考資料:https://blog.csdn.net/qq_34377830/article/details/81872568