9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【GAS】スプレッドシートで参照元のセルにジャンプする関数を書いた(vlookupにも対応)

Last updated at Posted at 2019-10-21

Googleスプレッドシートのここが辛いよ

日頃からGoogleスプレッドシートのお世話になってて大好きな製品ですが、参照元のセルを確認したいときにショートカットがなくて辛くありませんか?

参照とは

正しい表現なのかわからないのですが、ここでいう 参照 とは

image.png

このように別シートから値を参照しているケースや、

image.png

vlookupで特定のセルの値を参照しているケースを指します。
(同一シートか別シートかは問わず)

こういった参照元のセルを見たいときどうするかというと、数式を見てシート名とセルの番地やvlookupで指定した列番号を覚えたりメモをとったりせねばならずストレス。

ということでGASを書きました。
このスクリプトを実行すると以下のような動きをします。

地味なデモ動画

Oct-21-2019-21-32-20.gif

▲ものすごく地味なデモ動画。
値を参照しているセルで関数を実行すると、となりのシートの該当セルに移動しています。

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();

}

メニューに追加しておくと便利

image.png

よく使う場合はスプレッドシートのメニューにしておくと便利です。

function onOpen() {
   var ui = SpreadsheetApp.getUi();
   var menu = ui.createMenu('関数');
   menu.addItem('参照元のセルにジャンプ', 'JumpToCellReference');
   menu.addToUi();
 }

おわりに

毎日セルを参照しまくってる人はぜひお試しください。
(いったいどれくらいいるのか?)

【GAS】以前書いた「参照元のセルにジャンプするスクリプト」をバージョンアップして vlookup()にも対応した – pplog という記事を書いた後、Qiitaを使ってみたくなって、ほぼ同じ内容だけど投稿してみました。

おわり

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?