目錄
- 系列文章
- 5、Excel實戰
- 使用for循環給10*10的表格填充行列之和
- 使用for循環將10*10表格中的偶數值提取到另一個sheet頁
- 使用for循環給寫一個99乘法表
- 按市場成員名稱分類(即市場成員A、B、C...),統計月內不同時間段表1和表2的乘積之和(月內所有天數00:15~24:00時間段的乘積和)。
系列文章
????使用、工程、模塊介紹
????JSA語法
????JSA語法練習題
????Excel常用Api
????Excel實戰
????后續常見問題、顏色附錄,持續更新中…
5、Excel實戰
使用for循環給10*10的表格填充行列之和
---------------------------------------------分割---------------------------------------------
使用for循環將10*10表格中的偶數值提取到另一個sheet頁
---------------------------------------------分割---------------------------------------------
使用for循環給寫一個99乘法表
11 = 1
12 = 2 22 = 4
13 = 3 23 = 6 33 = 9
…
---------------------------------------------分割---------------------------------------------
按市場成員名稱分類(即市場成員A、B、C…),統計月內不同時間段表1和表2的乘積之和(月內所有天數00:15~24:00時間段的乘積和)。
function 獲取每月市場成員數據乘積和(){let activeWorkbook = Application.ActiveWorkbook;if(activeWorkbook.Name !== '市場成員數據.xlsx'){console.log('文件選擇錯誤 ')return}// 基本數據表let sheet1 = Sheets.Item("sheet1");let sheet2 = Sheets.Item("sheet2");// 將基本數據表轉換為以下格式/*let mx = {'市場成員A': {cost:0, // 乘積和days:[{day: 1,cost: 0, // 單日乘積和times: [{time: '00:15',cost: 0, // sheet1數據 * sheet2數據},{time: '00:30',cost: 0, // sheet1數據 * sheet2數據},...]},{day: 2,cost: 0,times: [...]},...]} }*/// 定義存放月全部市場成員數據對象let mx = {};// 循環sheet1表。i行j列。sheet1頁起始行為2,結束行為4173for(let i = 2; i < 4174; i++){// 獲取市場成員名稱let name = sheet1.Cells(i, 1).Value2;// 獲取日期let date = sheet1.Cells(i, 4).Text;// 從日期yyyy/mm/dd中獲取dd,*1可以將字符串轉換為數字。下面的代碼中需要用day做+法,所以要轉換為數字。let day = date.split('/')[2] * 1;// 定義每天的乘積和let dayCost = 0;// 定義存放96時段數據數組let dayTimes = [];// 共96列+起始列7 = 103for(let j = 7; j < 103; j++){// sheet1數據let sheet1Data = sheet1.Cells(i, j).Value2 || 0// sheet2數據// j=7時00:15,sheet2表為第2列;j=8時00:30,sheet2表為第3列,所以j-5為sheet2的行。// day為日,所以+1為sheet2的列。let sheet2Data = sheet2.Cells(j - 5, day + 1).Value2 || 0// 分時乘積let cost = sheet1Data * sheet2Data// 存放每個分時的sheet1數據dayTimes.push({time: sheet1.Cells(1, j).Value2,cost})// 將分時乘積相加獲得一天的乘積和dayCost += cost}// 定義存放每天各市場成員的數據對象let dayData = {day,cost: dayCost,times: dayTimes}// 將dayData按市場成員名分組存放,并計算月和if(!mx[name]){mx[name] = {cost: dayData.cost,days: [dayData]}}else{mx[name].cost += dayData.cost;mx[name].days.push(dayData);}}// 下面的全部是打印,可以全部注釋掉// console.log(JSON.stringify(mx))// 獲取全部市場成員名數組let names = Object.keys(mx);// 循環市場成員數組let costCount = 0for(let i = 0; i < names.length; i++){// 打印每個市場成員的乘積和let name = names[i];costCount += mx[name].cost;console.log(name + ',乘積和為:' + mx[name].cost);}console.log('全部市場成員乘積總和:' + costCount)
}