Korzystając z Arkuszy kalkulacyjnych Google, możesz pisać zapytania . Jeśli jednak masz litery w cudzysłowie, nie są one aktualizowane w miarę zmiany kolejności kolumn.
Czy istnieje sposób na napisanie tych zapytań, aby nie musiały być aktualizowane przy każdym dodawaniu lub usuwaniu kolumny?
Czy można użyć nazwanych zakresów w zapytaniach, aby rozwiązać ten problem?
Oto przykład: jeśli dodasz kolumnę po „F”, wówczas kolumna „G” zostanie wypchnięta do „H” i zmieni się znaczenie formuły.
= Zapytanie (B: J, „wybierz średnią grupę (J) według G”)
Powiązane pytania
To pytanie nie jest tożsame z używaniem zapytania z nagłówkami kolumn zamiast liter kolumn, ponieważ to pytanie koncentruje się na użyciu nazwanych zakresów.
Tak, możesz użyć nazwanych zakresów zamiast wbudowanych nagłówków kolumn, ale podstawowa idea jest taka sama, jak inne odpowiedzi na to pytanie, sugerowane w innych podobnych pytaniach w tej witrynie: arkusz kalkulacyjny powinien być ustawiony tak, aby budował dynamiczny ciąg SQL .
Powiedzmy, że
J
iG
odpowiada nazwanych zakresówGrades
iClass
odpowiednio.Poniższe podejście działa tylko wtedy, gdy kolumny znajdują się między kolumnami A i Z
CELL("address",Grades)
wróci"$J:$J"
. Aby uzyskać odwołanieMID(CELL("address",Grades),2,1)
do kolumny, użyj get"J"
. Ostateczna formuła toPoniższe podejście działa we wszystkich przypadkach
COLUMN(Grades)
zwróci liczbę całkowitą (liczba w postaci 1,2,3 itd.) Aby uprościć formułę, aby utworzyć argument instrukcji SQL, sugeruję wymusić na SQL odwoływanie się do kolumn w postaci COL1, COL2 itp. za pomocą tablicy notacja ({B:J}
). Ostateczna formuła toArkusz demonstracyjny
Bibliografia
Korzystanie z tablic w Arkuszach Google - Edytory Dokumentów Google - Pomoc
źródło
Odpowiedź Rubena nie rozwiązuje problemu we wszystkich przypadkach, ponieważ
MID(CELL("address",Grades),2,1)
kończy się niepowodzeniem, jeśliGrades
zakres zostanie przeniesiony do kolumny z dwiema literami$AA:$AA
.W takim przypadku
MID(CELL("address",Grades),2,2)
potrzebna jest formuła . W przypadku nazwanych zakresów, które obejmują lub przylegają do$Z:$AA
zakresu, ta formuła staje się problematyczna.Formuła
REGEXEXTRACT( CELL("address", Grades), "\$([a-zA-Z]+)\$")
rozwiązuje problem w ogólnym przypadku, ale mocno kwestionuję jego wydajność procesora, gdy jest używana w całym dużym arkuszu kalkulacyjnym.źródło
Natrafiłem na tę stronę infoinspired.com, która wyjaśnia jeden ze sposobów. Przetestowałem to dokładnie tak, jak w przykładzie, który podał i zadziałało. Ustawić:
Wyjaśnienie F1: Formuła ADRES, która zawiera funkcje ROW i COLUMN, zwraca adres komórki B1. Funkcja LEWA wyodrębnia z niej pierwszą literę, która jest nagłówkiem kolumny.
--- Kliknij komórkę F1, a następnie przejdź do menu Dane> Nazwane zakresy i nazwij zakres „Wiek” (bez cudzysłowu)
Teraz możesz sformułować swoje zapytanie jako:
=QUERY(A:B,"Select "&Age)
Na swojej stronie ma bardziej skomplikowane przykłady, które zamierzam teraz przetestować, ale jestem zachęcany, że pierwszy przykład zadziałał!
Edytuj - przepraszam, jeśli dokładnie to zaproponowali inni, udzielając odpowiedzi. Właśnie znalazłem ten przykład krystalicznie czysty i byłem w stanie go rozgryźć. Pomyślałem, że może pomóc innym z tym samym pytaniem.
źródło