열 참조가 최신 상태로 유지되도록 Google 스프레드 시트 쿼리에서 명명 된 범위를 사용할 수 있습니까?


9

Google 스프레드 시트를 사용하여 검색어 를 작성할 있습니다. 그러나 따옴표 안에 열 문자가 있으면 열 순서가 변경 될 때 업데이트되지 않습니다.

이러한 쿼리를 작성하여 열을 추가하거나 제거 할 때마다 업데이트 할 필요가없는 방법이 있습니까?

이 문제를 해결하기 위해 쿼리에서 명명 된 범위 를 사용할 수 있습니까?

예를 들면 다음과 같습니다. 'F'뒤에 열을 추가하면 'G'열이 'H'로 푸시되고 수식의 의미가 변경됩니다.

= Query (B : J, "G 별 평균 (J) 그룹 선택")

관련 질문

이 질문은 명명 된 범위의 사용에 중점을 두기 때문에 열 문자 대신 열 머리글로 쿼리 사용과 동일하지 않습니다 .

답변:


5

그것은 까다로운 일이지만 도우미 범위와 일부 연결로 가능합니다.

해야 할 일 :

  1. 다음과 같이 열 문자를 전달할 명명 된 범위 (COLS)를 작성하십시오.

    A  
    B  
    C  
    D  
    E  
    ...
    

    그림과 같이 수직으로하십시오.

  2. 다음과 같이 쿼리 문자열을 조립하십시오.

    =QUERY( B:J, "SELECT AVG(" & INDEX(**COLS**, COLUMN(J1)) & ") GROUP BY " & INDEX(**COLS**, COLUMN(G1)) )
    

1
명명 된 범위는 수직 또는 수평 모양으로 작동합니다.
Rubén

@ Rubén이 옳을 것입니다.
Oneide

3

이러한 쿼리를 작성하여 열을 추가하거나 제거 할 때마다 업데이트 할 필요가없는 방법이 있습니까?

이 문제를 해결하기 위해 쿼리에서 명명 된 범위를 사용할 수 있습니까?

예, 기본 제공 열 머리글 대신 명명 된 범위를 사용할 수 있지만 기본 아이디어는이 사이트의 다른 유사한 질문에서 제안한 다른 답변과 동일합니다. 스프레드 시트는 동적 SQL 문자열을 작성 하도록 설정해야 합니다 .

그 말을하자 JG명명 된 범위와 일치 Grades하고 Class각각.


다음 방법은 열이 열 A와 Z 사이에있을 때만 작동합니다.


CELL("address",Grades)을 반환 "$J:$J"합니다. 열 참조 사용 얻으려면 MID(CELL("address",Grades),2,1)얻기를 "J". 마지막 공식은

= QUERY (B : J, "SELECT AVG ("&
중간 (CELL ( "주소", 학년), 2,1) &
") GROUP BY"&
MID (CELL ( "주소", 클래스), 2,1))


다음 방법은 모든 경우에 적용됩니다.


COLUMN(Grades)정수 (1,2,3 형식의 수 등)를 반환합니다. SQL 문 인수를 만들기 위해 수식을 단순화하려면 배열을 사용하여 SQL이 COL1, COL2 등의 열 참조를 사용하도록 강요하는 것이 좋습니다 표기법 ( {B:J}). 마지막 공식은

= QUERY ({B : J}, "SELECT AVG (Col"& COLUMN (Grades) -1 & ") GROUP BY Col"& COLUMN (Class) -1)

데모 스프레드 시트

참고 문헌

Google 스프레드 시트에서 배열 사용-Google 오피스 편집기 도움말


1

Ruben의 대답 은 범위가과 같은 이중 문자 열로 이동 MID(CELL("address",Grades),2,1)하면 실패 하기 때문에 모든 경우에 문제를 해결하지 못합니다 .Grades$AA:$AA

이 경우 수식 MID(CELL("address",Grades),2,2)이 필요합니다. 범위에 걸쳐 있거나 그와 인접한 명명 된 범위의 $Z:$AA경우이 공식은 문제가됩니다.

이 공식 REGEXEXTRACT( CELL("address", Grades), "\$([a-zA-Z]+)\$")은 일반적인 경우의 문제를 해결하지만 큰 스프레드 시트에서 사용될 때 CPU 효율성에 의문을 제기합니다.


대답 에는 두 가지 접근법이 있지만이 대답은 그중 하나만 비판합니다. 두 번째 방법은 모든 경우에 효과적입니다.
Rubén

나는 이것이 다른 시트에있는 명명 된 범위에서 작동하지 않을 것이라고 생각합니다. 이후 2 년이 지
났는지

0

나는 우연히 이 페이지 infoinspired.com 그 일을하는 한 가지 방법을 설명 저것. 그가 준 예제와 똑같이 테스트하고 작동했습니다. 설정:

      A        B        F                                     G
 1  names     Age   =left(address(row(B1),column(B1),4))   =QUERY(A:B,"Select "&Age)
 2  joey      32
 3  nicole    26
 4  sally     66

F1에 대한 그의 설명 : ROW 및 COLUMN 함수를 포함하는 ADDRESS 공식은 B1의 셀 주소를 리턴합니다. LEFT 함수는 열 제목 인 첫 번째 문자를 추출합니다.

--- 셀 F1을 클릭 한 다음 메뉴 데이터> 명명 된 범위로 이동하고 범위의 이름을 "나이"(인용 부호없이)로 지정하십시오.

이제 쿼리를 다음과 같이 공식화 할 수 있습니다. =QUERY(A:B,"Select "&Age)

그는 지금 테스트하려고하는 페이지에 더 복잡한 예제를 가지고 있지만 첫 번째 예제가 작동하도록 권장합니다!

편집-이것이 다른 사람들이 자신의 답변으로 제안한 내용 인 경우 죄송합니다. 방금이 예제를 수정하여 알아낼 수있었습니다. 같은 질문으로 다른 사람들에게 도움이 될 것이라고 생각했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.