回答編集履歴

4

補足回答の部分を修正、加筆

2021/01/12 09:34

投稿

sawa
sawa

スコア3002

test CHANGED
@@ -78,4 +78,38 @@
78
78
 
79
79
 
80
80
 
81
- 追記に誤りがあった訂正中
81
+ 以下、Arrayfolmura と Vlookup を使ったバージョン 参考まに。
82
+
83
+ 動きは重いかもです。
84
+
85
+
86
+
87
+ 出力後の1列目
88
+
89
+ ```
90
+
91
+ =ARRAYFORMULA(VLOOKUP(QUOTIENt(SEQUENCE(4*COUNTA('商品イメージ( T-2-7〜T-2-9)'!A1:A),1,4),4),{SEQUENCE(COUNTA('商品イメージ( T-2-7〜T-2-9)'!A1:A)),INDIRECT("'商品イメージ( T-2-7〜T-2-9)'!A1:A"&COUNTA('商品イメージ( T-2-7〜T-2-9)'!A1:A))},2,FALSE))
92
+
93
+ ```
94
+
95
+
96
+
97
+ 出力後の2列目
98
+
99
+ ```
100
+
101
+ =ARRAYFORMULA(IFERROR(VLOOKUP(A1:A,'商品イメージ( T-2-7〜T-2-9)'!A1:E,MOD(ROW(A1:A)-1,4)+2,FALSE),))
102
+
103
+ ```
104
+
105
+
106
+
107
+ もしA列のデータに重複する値がある場合は 2列目は以下で
108
+
109
+
110
+
111
+ ```
112
+
113
+ =ARRAYFORMULA(VLOOKUP(QUOTIENT(SEQUENCE(4*COUNTA('商品イメージ( T-2-7〜T-2-9)'!A1:A),1,4),4),{SEQUENCE(COUNTA('商品イメージ( T-2-7〜T-2-9)'!A1:A)),INDIRECT("'商品イメージ( T-2-7〜T-2-9)'!B1:E"&COUNTA('商品イメージ( T-2-7〜T-2-9)'!A1:A))},MOD(SEQUENCE(4*COUNTA('商品イメージ( T-2-7〜T-2-9)'!A1:A))-1,4)+2,FALSE))
114
+
115
+ ```

3

誤りがあったので訂正

2021/01/12 09:34

投稿

sawa
sawa

スコア3002

test CHANGED
@@ -78,26 +78,4 @@
78
78
 
79
79
 
80
80
 
81
- 一応、ArrayFormulaをVloolupと組み合わせていけるぽいので参考までに 関数でやる方法も追記
82
-
83
- そこそこ重いかもです。
84
-
85
-
86
-
87
- 出力後の1列目
88
-
89
- ```
90
-
91
- =ARRAYFORMULA(VLOOKUP(QUOTIENT(SEQUENCE(4*COUNTA('商品イメージ( T-2-7〜T-2-9)'!A1:A),1,4),4),{SEQUENCE(COUNTA('商品イメージ( T-2-7〜T-2-9)'!A1:A)),INDIRECT("'商品イメージ( T-2-7〜T-2-9)'!A1:A"&COUNTA('商品イメージ( T-2-7〜T-2-9)'!A1:A))},2,FALSE))
92
-
93
- ```
94
-
95
-
96
-
97
- 出力後の2列目
98
-
99
- ```
100
-
101
- =ARRAYFORMULA(IFERROR(VLOOKUP(A1:A,'商品イメージ( T-2-7〜T-2-9)'!A1:E,MOD(ROW(A1:A),5)+1,FALSE),))
102
-
103
- ```
81
+ 追記に誤りがあので訂正中

2

関数のケースを追記しました

2021/01/12 09:28

投稿

sawa
sawa

スコア3002

test CHANGED
@@ -73,3 +73,31 @@
73
73
  }
74
74
 
75
75
  ```
76
+
77
+ ---
78
+
79
+
80
+
81
+ 一応、ArrayFormulaをVloolupと組み合わせていけるっぽいので参考までに 関数でやる方法も追記
82
+
83
+ そこそこ重いかもです。
84
+
85
+
86
+
87
+ 出力後の1列目
88
+
89
+ ```
90
+
91
+ =ARRAYFORMULA(VLOOKUP(QUOTIENT(SEQUENCE(4*COUNTA('商品イメージ( T-2-7〜T-2-9)'!A1:A),1,4),4),{SEQUENCE(COUNTA('商品イメージ( T-2-7〜T-2-9)'!A1:A)),INDIRECT("'商品イメージ( T-2-7〜T-2-9)'!A1:A"&COUNTA('商品イメージ( T-2-7〜T-2-9)'!A1:A))},2,FALSE))
92
+
93
+ ```
94
+
95
+
96
+
97
+ 出力後の2列目
98
+
99
+ ```
100
+
101
+ =ARRAYFORMULA(IFERROR(VLOOKUP(A1:A,'商品イメージ( T-2-7〜T-2-9)'!A1:E,MOD(ROW(A1:A),5)+1,FALSE),))
102
+
103
+ ```

1

回答を追加

2021/01/12 09:02

投稿

sawa
sawa

スコア3002

test CHANGED
@@ -27,3 +27,49 @@
27
27
  =TRANSPOSE(SPLIT(TEXTJOIN(",",TRUE,B1:E),","))
28
28
 
29
29
  ```
30
+
31
+
32
+
33
+ ---
34
+
35
+ データ量的に関数の処理だと厳しいようなので GASで出力するコード
36
+
37
+ ベタな書き方しか出来ないのでfor入れ子で。
38
+
39
+
40
+
41
+ ```GAS
42
+
43
+ function dataTolist(){
44
+
45
+ const ss = SpreadsheetApp.getActiveSpreadsheet();
46
+
47
+ const fromSheet = ss.getSheetByName("商品イメージ( T-2-7〜T-2-9)");
48
+
49
+ const toSheet = ss.getSheetByName("商品50%具体化(T-2-13〜T-2-15)");
50
+
51
+ const lastrow = fromSheet.getLastRow();
52
+
53
+ const data = fromSheet.getRange(1,1,lastrow,5).getValues();
54
+
55
+
56
+
57
+ let list =[];
58
+
59
+
60
+
61
+ for(i=0; i<lastrow; i++){
62
+
63
+ for(j=1; j<=4; j++){
64
+
65
+ list.push([data[i][0],data[i][j]]);
66
+
67
+ }
68
+
69
+ }
70
+
71
+ toSheet.getRange(1,1,list.length,2).setValues(list);
72
+
73
+ }
74
+
75
+ ```