見出し画像

【勉強する】GAS開発するよ~!!【練習問題22-26】

Excel神髄さんのサイトに掲載されているVBA練習問題をGASで解いてみました🙆‍♀️頭の体操になるので是非参考にしてください~!

◎動画はこちら

◎練習問題22

function sample22() {

 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheetByName("練習22");
 var rows = sheet.getLastRow()-1;
 var columns = sheet.getLastColumn();
 
 var datas = sheet.getRange(2,1,rows,columns).getValues();
 
 var values = [];
 
 datas.forEach(function(data,ind){
 
   var num = data[0];
   
   for(var i=1; i<columns; i=i+3){
   
     var product = datas[ind][i];
     var amount = datas[ind][i+1];
     var price = datas[ind][i+2];
     
     if(product.length>0){
       values.push([num,product,amount,price]);
     }
     
   }
   
 });
 
 var lastRow = sheet.getLastRow()+2
 var range = sheet.getRange(lastRow,1,values.length,4);
 range.setValues(values);
 sheet.getRange(1,1,1,4).copyTo(range,{formatOnly:true});
 
}

◎練習問題25

function sample25() {

 //"VBA"を"vba"に変換
 var str = "Excelマクロ(VBA)練習";
 var result = str.replace("VBA","vba");
 
 //括弧()内の文字のみ取り出す
 var str = "Excelマクロ(VBA)練習";
 var result = str.match(/\(.+\)/)[0].replace("(","").replace(")","");
 
 //拡張子を取り出す
 var str = "マクロ.セミナー.xls";
 var result = str.match(/\.\w+/)[0].replace(".","");
 
 //全て小文字に変換
 var str = "ExcelVba";
 var result = str.toLocaleLowerCase();
 
 //日付データに変換
 var str = "20130410";
 var year = str.slice(0,4)
 var month = str.slice(4,6)
 var day = str.slice(6,8);
 var date = new Date(year,month-1,day);
 date = Utilities.formatDate(date,"Asia/Tokyo","yyyy/MM/dd");
 
 //曜日を求める
 var str = "2013/4/10";
 var result = new Date(str).getDay();
 
 //10日後の日付を求める
 var str = "2013/4/28";
 var date = new Date(str);
 date.setDate(date.getDate()+10)
 date = Utilities.formatDate(date,"Asia/Tokyo","yyyy/MM/dd");
 
 //月末日を求める
 var str = "2013/4/10";
 var date = new Date(str);
 var newDate = new Date(date.getFullYear(),date.getMonth()+1,0)
 newDate = Utilities.formatDate(newDate,"Asia/Tokyo","yyyy/MM/dd");
 
 //先頭の数値を取り出す
 var str = "350ML";
 var result = str.match(/\d{1,}/)[0];
 
 //整数にする
 var num = 352.5;
 var result = Math.floor(num); //小数点以下切り捨て
 var result = Math.ceil(num); //小数点以下切り上げ
 var result = Math.round(num); //四捨五入
 
 //小数以下1桁に四捨五入する
 var num = 352.45;
 var result = Math.round(num*10)/10;
 
 //ピリオド(.)の数を数える
 var str = "192.168.101.255";
 var result = str.match(/\./g).length;
 
 //前後の余分な空白を取り除く
 var str = " V B A ";
 var result = str.trim(); 
 
}

◎練習問題26

function sample26() {

 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var url = ss.getUrl();
 var sheets = ss.getSheets();
 
 var values = [["シート名"]];
 
 sheets.forEach(function(sheet){
 
   var id = sheet.getSheetId();
   var sheetUrl = url + "#gid=" + id;
   var name = sheet.getName();
   
   var formula = `=HYPERLINK("${sheetUrl}","${name}")`;
   
   values.push([formula]);
   
 });
 
 var newSheet = ss.insertSheet("シート一覧",0);
 var range = newSheet.getRange(1,1,values.length,1);
 range.setValues(values);
 
 range.setBorder(true,true,true,true,true,true,"#000000",SpreadsheetApp.BorderStyle.SOLID);
 range.setHorizontalAlignment("center");
 
 var columnRange = newSheet.getRange(1,1);
 columnRange.setBackground("#4a86e8");
 columnRange.setFontColor("#ffffff");
 
 newSheet.setHiddenGridlines(true);
 
}

GASの基礎学習にはUdemyがおすすめです!(徹底解説してます!)


この記事が気に入ったらサポートをしてみませんか?