Sub GA_時間書式変更_※実行前に対象列の先頭セルを選択()
' アクティブセルの列を取得して変数に格納
Dim ActiveColumn As Long
ActiveColumn = ActiveCell.Column
Debug.Print ActiveColumn
' アクティブセルの行を取得して変数に格納
Dim ActiveRow As Long
ActiveRow = ActiveCell.Row
Debug.Print ActiveRow
' 同様に、データの最終行を取得して変数に格納
Dim LastRow As Long
LastRow = Selection.End(xlDown).Row
Debug.Print LastRow
'時間書式変更
Dim ActivRange As Range
For Each ActivRange In Range(Cells(ActiveRow, ActiveColumn), Cells(LastRow, ActiveColumn))
ActivRange.Value = ActivRange.Value / 86400
ActivRange.NumberFormatLocal = "[$-F400]h:mm:ss AM/PM"
Next ActivRange
End Sub
今回は、このマクロの内容をGoogleスプレッドシートでも利用できるよう、GASで書き直しました。
書き直したGASがこちら
function myFunction() {
//アクティブシートの取得
let mySheet = SpreadsheetApp.getActiveSheet();
//アクティブセルの取得
let myActiveCell = mySheet.getActiveCell();
//アクティブセルから行と列を取得
let selectedRow = myActiveCell.getRow();
Logger.log(selectedRow);
let selectedColumn = myActiveCell.getColumn();
Logger.log(selectedColumn);
//最終行を取得
let lastRow = mySheet.getDataRange().getLastRow();
Logger.log(lastRow);
//変更範囲をmyRange、値をmyValuesに格納
let myRange = mySheet.getRange(2,selectedColumn,lastRow-1);
let myValues = myRange.getValues();
//ログでチェック
Logger.log(myValues);
//繰り返し処理の変数iの宣言(2行目から最終行まで1回ずつ繰り返し)、単位変更のための計算
for(let i=0; i< lastRow-1; i++){
myValues[i][0]=myValues[i][0]/86400;
}
//変換した内容を貼り付けて、書式変更
myRange.setValues(myValues);
myRange.setNumberFormat('H:mm:ss');
}