0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

スプレッドシートでセル内に改行を含むデータを行毎のデータに変換したい

Last updated at Posted at 2023-08-09

この記事は移行しました!最新の内容はこちらをご覧ください😀

やりたいこと

シート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さんのこと「じぷとさん」と呼んでるのですが、みなさんどうですか?

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?