やりたいこと

シートA のA,B列に下記3行があります。

商品 サイズと値段
ジュース S:100円
M:150円
L:200円
ポテト M:150円
L:200円
バーガー 通常:200円
パティ倍:300円

これを シートB のA列に下記のように7行になるように出力したい。

| 商品とサイズと値段 |
|:-:|
ジュース_S:100円
ジュース_M:150円
ジュース_L:200円
ポテト_M:150円
ポテト_L:200円
バーガー_通常:200円
バーガー_パティ倍:300円

関数では難しそうだった

関数一発で実現したかったのですが、ChatGPTさん的にも難しそうだったので諦めました。

GASで実現

GPTさんがGASを提案してきたので書いてもらいました。

function copySheetAToB() {
  var sheetA = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シートA');
  var sheetB = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シートB');

  var dataRange = sheetA.getDataRange();
  var data = dataRange.getValues();

  var outputData = [];
  for (var i = 0; i < data.length; i++) {
    var item = data[i][0];
    var prices = data[i][1].split("\n");
    for (var j = 0; j < prices.length; j++) {
      var parts = prices[j].split(':');
      var size = parts[0];
      var price = parts[1];
      var outputRow = item + '_' + size + ':' + price;
      outputData.push([outputRow]);
    }
  }

  sheetB.getRange(1, 1, outputData.length, 1).setValues(outputData);
}

おわりに

区切り文字が改行ではなく、カンマとかでも対応できますね!
.split(',') とかにすればOK!

ところで

GPTさんのこと「じぷとさん」と呼んでるのですが、みなさんどうですか?