Googleスプレッドシートのここが辛いよ
日頃からGoogleスプレッドシートのお世話になってて大好きな製品ですが、参照元のセルを確認したいときにショートカットがなくて辛くありませんか?
参照とは
正しい表現なのかわからないのですが、ここでいう 参照
とは
このように別シートから値を参照しているケースや、
vlookupで特定のセルの値を参照しているケースを指します。
(同一シートか別シートかは問わず)
こういった参照元のセルを見たいときどうするかというと、数式を見てシート名とセルの番地やvlookupで指定した列番号を覚えたりメモをとったりせねばならずストレス。
ということでGASを書きました。
このスクリプトを実行すると以下のような動きをします。
地味なデモ動画
▲ものすごく地味なデモ動画。
値を参照しているセルで関数を実行すると、となりのシートの該当セルに移動しています。
GAS
以下のコードを、使いたい自分のスプレッドシートのスクリプトエディタにコピペすれば使えます。
値を参照しているセルを選択し関数を実行すれば、該当のセルにシュッとジャンプしてくれます。
function JumpToCellReference() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var formula = sheet.getCurrentCell().getFormula()
var str = "vlookup" //vlookupかどうかで処理を分ける
if(formula.match(str)) {
JumpToReferrerVlookup();
}else{
JumpToReferrer();
}
}
function JumpToReferrerVlookup() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var formula = sheet.getCurrentCell().getFormula().replace("=vlookup(","").replace(")","").split(",");
var vColumn = sheet.getRange(formula[1]).getColumn();
var vKeyword = sheet.getRange(formula[0]).getValue();
var vIndex = parseInt(formula[2]) -1;
var vSheetName = sheet.getRange(formula[1]).getSheet().getName();
var vSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(vSheetName);
var textFinder = vSheet.createTextFinder(vKeyword);
var ranges = textFinder.findAll();
var rows = [];
var targetCol = vColumn;
for (var i = 0; i < ranges.length; i++ ) {
var row = ranges[i].getRow();
var col = ranges[i].getColumn();
if(col === targetCol) {
col = col + vIndex;
var tagetCell = vSheet.getRange(row,col);
tagetCell.activate();
rows.push(ranges[i].getRow());
break;
}
}
}
function JumpToReferrer() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
var value = sheet.getCurrentCell().getFormula().replace("=","");
var objRange = sheet.getRange(value);
objRange.activate();
}
メニューに追加しておくと便利
よく使う場合はスプレッドシートのメニューにしておくと便利です。
function onOpen() {
var ui = SpreadsheetApp.getUi();
var menu = ui.createMenu('関数');
menu.addItem('参照元のセルにジャンプ', 'JumpToCellReference');
menu.addToUi();
}
おわりに
毎日セルを参照しまくってる人はぜひお試しください。
(いったいどれくらいいるのか?)
【GAS】以前書いた「参照元のセルにジャンプするスクリプト」をバージョンアップして vlookup()にも対応した – pplog という記事を書いた後、Qiitaを使ってみたくなって、ほぼ同じ内容だけど投稿してみました。
おわり