質問するログイン新規登録

回答編集履歴

5

修正

2021/06/21 10:14

投稿

退会済みユーザー
answer CHANGED
@@ -38,15 +38,13 @@
38
38
 
39
39
  下記は1行目に「M」というキーがある列の列番号(アルファベット)を取得する例になります。
40
40
  ```
41
- LEFT(ADDRESS(1,MATCH("M",$A$1:$EI$1,0),4),LEN(ADDRESS(1,MATCH("M",$A$1:$EI$1,0),4))-1)
41
+ LEFT(ADDRESS(1, MATCH("M",MT5!$1:$1,0),4),LEN(ADDRESS(1,MATCH("M",MT5!$1:$1,0),4))-1)
42
42
  ```
43
- ※~~この場合、列番号をそのまま抽出する必要があるため、MATCHの範囲に名前付き範囲(HEADER)は使用できず、1行目のヘッダ範囲を絶対番地で指定する必要があります。~~
44
- この場合、
45
- ・データの範囲より**前**に列を挿入してDATA及びHEADERの開始列を変えてしまうと、正しくデータを取得できません。
46
- ・DATA/HEADERの始点がA列よりも右である場合は、下記の式を調整する必要があります。
47
43
 
44
+ また、列番号をそのまま抽出する必要があるため、HEADERはヘッダとなる行全体(例:「シート名!$1:$1」)を参照している必要があります。
45
+ (そうしないと、指定範囲外に列を挿入した場合、うまくデータが取れません)
46
+
48
- 例(HEADERがA1:Z1、DATAがA2からZ1000の範囲で、ヘッダ列に「A」と「M」が入っている列を指定して抽出する場合):
47
+ 例(HEADERが範囲「MT5!$1:$1」、DATAが「MT5!$A$2:$Z$1000」の範囲で、ヘッダ列に「A」と「M」が入っている列を指定して抽出する場合):
49
48
  ```
50
49
  =QUERY(DATA,"Select "&LEFT(ADDRESS(1,MATCH("A",HEADER,0),4),LEN(ADDRESS(1,MATCH("A",HEADER,0),4))-1)&","&LEFT(ADDRESS(1,MATCH("M",HEADER,0),4),LEN(ADDRESS(1,MATCH("M",HEADER,0),4))-1))
51
- ```
50
+ ```
52
- ※この場合A列の左に空白セルを挿入するとデータがとれなくなる。

4

修正

2021/06/21 10:14

投稿

退会済みユーザー
answer CHANGED
@@ -40,9 +40,13 @@
40
40
  ```
41
41
  LEFT(ADDRESS(1,MATCH("M",$A$1:$EI$1,0),4),LEN(ADDRESS(1,MATCH("M",$A$1:$EI$1,0),4))-1)
42
42
  ```
43
- ※この場合、列番号をそのまま抽出する必要があるため、MATCHの範囲に名前付き範囲(HEADER)は使用できず、1行目のヘッダ範囲を絶対番地で指定する必要があります。
43
+ ~~この場合、列番号をそのまま抽出する必要があるため、MATCHの範囲に名前付き範囲(HEADER)は使用できず、1行目のヘッダ範囲を絶対番地で指定する必要があります。~~
44
+ この場合、
45
+ ・データの範囲より**前**に列を挿入してDATA及びHEADERの開始列を変えてしまうと、正しくデータを取得できません。
46
+ ・DATA/HEADERの始点がA列よりも右である場合は、下記の式を調整する必要があります。
44
47
 
45
- 例(「A」と「M」をヘッダのキーに指定して抽出する場合):
48
+ 例(HEADERがA1:Z1、DATAがA2からZ1000の範囲で、ヘッダ列に「A」と「M」が入っている指定して抽出する場合):
46
49
  ```
47
- =QUERY(DATA,"Select "&LEFT(ADDRESS(1,MATCH("A",'MT5'!$A$1:$Z$1,0),4),LEN(ADDRESS(1,MATCH("A",'MT5'!$A$1:$Z$1,0),4))-1)&","&LEFT(ADDRESS(1,MATCH("M",'MT5'!$A$1:$Z$1,0),4),LEN(ADDRESS(1,MATCH("M",'MT5'!$A$1:$Z$1,0),4))-1))
48
- ```
50
+ =QUERY(DATA,"Select "&LEFT(ADDRESS(1,MATCH("A",HEADER,0),4),LEN(ADDRESS(1,MATCH("A",HEADER,0),4))-1)&","&LEFT(ADDRESS(1,MATCH("M",HEADER,0),4),LEN(ADDRESS(1,MATCH("M",HEADER,0),4))-1))
51
+ ```
52
+ ※この場合A列の左に空白セルを挿入するとデータがとれなくなる。

3

修正

2021/06/21 08:52

投稿

退会済みユーザー
answer CHANGED
@@ -16,10 +16,13 @@
16
16
  手順:
17
17
  1.データ参照元シート(MT5シート)のA1:EI1を選択し、選択した範囲に「HEADER」という名前を付けます。
18
18
 
19
- 2.データ参照元(MT5シート)の実質的データ(A2:EI~)を選択し、選択した範囲に「DATA」という名前を付けます。
19
+ 2.データ参照元(MT5シート)の2行目以降の実質的データ範囲(A2:EI~)を選択し、選択した範囲に「DATA」という名前を付けます。
20
20
 
21
- 3.抽出を表示したいセルの数式に下記を定します。
21
+ 3.抽出を表示したいセルの数式に下記を定します。
22
+
23
+ ```
22
24
  =Query(IMPORTRANGE("シートID","DATA"),"Select Col" & MATCH("A",HEADER) & ",Col" & MATCH("N",HEADER) & ",Col" & MATCH("EI",HEADER))
25
+ ```
23
26
 
24
27
  結果:
25
28
  DATAの範囲内で列を挿入した場合、DATAの範囲は自動的に拡張されます。

2

修正

2021/06/21 08:33

投稿

退会済みユーザー
answer CHANGED
@@ -33,13 +33,13 @@
33
33
  大まかな考え方は上記と同様になりますが、IMPORTRANGEを使用しない場合、クエリ文はCol+数字ではなく、アルファベットで指定する必要があります。
34
34
  アルファベットの列番号は、下記のような式で取得できます。
35
35
 
36
- 下記は1行目に「M」というキーがある列を指定する例になります。
36
+ 下記は1行目に「M」というキーがある列の列番号(アルファベット)取得する例になります。
37
37
  ```
38
38
  LEFT(ADDRESS(1,MATCH("M",$A$1:$EI$1,0),4),LEN(ADDRESS(1,MATCH("M",$A$1:$EI$1,0),4))-1)
39
39
  ```
40
40
  ※この場合、列番号をそのまま抽出する必要があるため、MATCHの範囲に名前付き範囲(HEADER)は使用できず、1行目のヘッダ範囲を絶対番地で指定する必要があります。
41
41
 
42
- 例:
42
+ (「A」と「M」をヘッダ列のキーに指定して抽出する場合)
43
43
  ```
44
44
  =QUERY(DATA,"Select "&LEFT(ADDRESS(1,MATCH("A",'MT5'!$A$1:$Z$1,0),4),LEN(ADDRESS(1,MATCH("A",'MT5'!$A$1:$Z$1,0),4))-1)&","&LEFT(ADDRESS(1,MATCH("M",'MT5'!$A$1:$Z$1,0),4),LEN(ADDRESS(1,MATCH("M",'MT5'!$A$1:$Z$1,0),4))-1))
45
45
  ```

1

修正

2021/06/21 08:31

投稿

退会済みユーザー
answer CHANGED
@@ -23,10 +23,10 @@
23
23
 
24
24
  結果:
25
25
  DATAの範囲内で列を挿入した場合、DATAの範囲は自動的に拡張されます。
26
- ヘッダ文字列を消したり変えりしない限り、MATCH関数による位置取得は正常に行われるため、取得対象のデータは列挿入前から変わりません。
26
+ ヘッダ文字列を消したり変えりしない限り、MATCH関数による位置取得は列の挿入に合わせて正常に行われるため、取得対象のデータは列挿入前から変わりません。
27
27
 
28
28
  DATAの範囲外に列を挿入した場合、DATAの範囲は自動的に移動されます。
29
- ヘッダ文字列を消したり変えない限り、MATCH関数による位置取得は変わらないため、取得対象のデータは列挿入前から変わりません。
29
+ ヘッダ文字列を消したり変えたりしない限り、MATCH関数による位置取得は変わらないため、取得対象のデータは列挿入前から変わりません。
30
30
 
31
31
  ----
32
32
  + IMPORTRANGEを使用しない場合: