質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

1749閲覧

GASでスプレッドシートの複数セルの値を1つのセル内に改行して出力したいです

mizuno12

総合スコア5

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2022/05/18 03:18

編集2022/05/18 04:22

スプレッドシートの縦列に並んだセルの複数の値から頭12桁が共通するセルの値を,1つのセル内に改行して出力したいです。

例えば,画像のように,A列のセルの中から頭12桁が共通しているものでグループ化し,それぞれをC列のセルにまとめて出力紙たいです。

イメージ説明

ボタンなどを設置して,押したら上記の動作ができるようにしたいと思います。

現状は以下のようにTEXTJOIN関数を使用してまとめています。

C1のセル

1=TEXTJOIN(CHAR(10),TRUE,A1:A3)

C2のセル

1=TEXTJOIN(CHAR(10),TRUE,A4:A5)

C3のセル

1=TEXTJOIN(CHAR(10),TRUE,A6:A8)

A列の値が膨大なため,自動化したいのですが,これ以上の見通しがつかなくて困っています。
GASを使用しなくても,表示させることができるかもしれませんが,
わかる方がみえましたら,ご回答のほどよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1T2R3M4

2022/05/18 03:59

現時点でのコードを質問に追記していただけませんか。 以下は確認されていますか。 https://teratail.com/help/avoid-asking コードをください・デバッグしてください等の丸投げの質問 何かを作りたいのでコードを書いてほしい、学校の課題を解いてほしい等の質問は、具体的にプログラミングで困っている質問ではないと考え、推奨していません。
mizuno12

2022/05/18 04:23

申し訳ありません。私の知識不足のため,丸投げのような質問になってしまいました。 修正しましたので,ご確認をお願いいたします。
guest

回答1

0

ベストアンサー

このような感じでしょうか?

gs

1function myFunction123() { 2 let ss = SpreadsheetApp.getActiveSpreadsheet() 3 let sheet = ss.getSheetByName('シート9') 4 5 let values = sheet.getRange(1, 1, sheet.getLastRow(), 1).getValues() 6 7 // 頭12桁をキーに、セルの行数を格納 8 let valueMap = {} 9 10 values.forEach(function(vv, index) { 11 vv.forEach(function(v) { 12 // 頭12桁の取得 13 let valueKey = v.slice(0, 12) 14 15 if (valueMap[valueKey] === undefined) { 16 // 頭12桁をキーに、セルの行数を配列化して追加 17 valueMap[valueKey] = [index + 1] 18 } else { 19 // 同じ頭12桁の値がある場合、配列にセルの行数を追加 20 valueMap[valueKey].push(index + 1) 21 } 22 }) 23 }) 24 25 // C列書き込み用配列 26 let cCellValues = [] 27 Object.keys(valueMap).forEach(function(key) { 28 let cStr = [] 29 this[key].forEach(function(val) { 30 cStr.push(sheet.getRange(val ,1).getValue()) 31 }) 32 cCellValues.push([cStr.join('\n')]) 33 }, valueMap) 34 35 // C列に頭12桁の文字が同じ値をセット 36 sheet.getRange(1, 3, cCellValues.length, cCellValues[0].length).setValues(cCellValues) 37} 38
実施前実施後
イメージ説明イメージ説明

ボタン設置は文章での説明は長くなるので、下記サイトを参考にしてみてください。
https://www.acrovision.jp/service/gas/?p=269

投稿2022/05/18 04:41

k.a_teratail

総合スコア845

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mizuno12

2022/05/18 04:53

ありがとうございました。解決できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問