Po przeczytaniu dokumentacji dla =QUERY
funkcji 1 , 2 , 3 niektóre z nich wydają się sugerować, że powinienem być w stanie używać nagłówków kolumn bezpośrednio w moim zapytaniu. Na przykład, =QUERY
funkcja przyjmuje trzeci opcjonalny parametr , HEADERS
który pozwala określić liczbę wierszy nagłówka,.
Większość moich zapytań byłaby o wiele ładniejsza, gdybym mógł użyć nagłówków kolumn, a zatem nie musiałbym używać indeksów kolumn, ale nie jestem w stanie sprawić, by działało.
Przykład:
A B C
---------------------
Name Phone City
Vidar 12345678 Oslo
Rupert 32165487 Berlin
Jestem w stanie zapytać o to za pomocą indeksów kolumn:
=QUERY(Sheet1!A1:C; "select A, B, C where A = 'Vidar'"; 1)
... ale nie używając nagłówków kolumn:
=QUERY(Sheet1!A1:C; "select A, B, C where Name = 'Vidar'"; 1)
... to daje mi błąd: nieprawidłowe zapytanie: kolumna [nazwa] nie istnieje w tabeli
Czy w ogóle można używać takich nagłówków kolumn? Jeśli nie, jaki jest cel tego HÈADERS
parametru?
źródło
HEADERS > 0
wtedy podana liczba wierszy nagłówka zostanie zwrócona=QUERY
na górze wyników zapytania, prawda? To ma sens - myślałem, żeHEADERS
tylko określone wiersze do zignorowania w zapytaniu.OFFSET
Opcji można użyć do zignorowania pierwszych wierszy.Tak to mozliwe. Najpierw musisz użyć PODAJNIK, aby uzyskać numer kolumny, której wartość odpowiada „Nazwa”. Następnie musisz użyć ADRESU, aby uzyskać odwołanie do komórki. Na koniec musisz użyć SUBSTITUTE, aby usunąć numer wiersza z odwołania do komórki.
źródło
Będąc starym postem, chciałem dodać moje rozwiązanie do miksu. Możesz użyć nazw kolumn, które uważam za bardziej przydatne. W ten sposób nie musisz edytować wywołań funkcji zapytania podczas wstawiania lub usuwania kolumn z danych źródłowych.
Widziałem, jak inni używają dopasowania i zastępują, zaimplementowałem coś nieco innego niż zwykłe wywołanie funkcji zapytania.
Po pierwsze - utwórz tabelę odnośników wszystkich swoich nazw kolumn w ten sposób. Moja tabela odnośników zaczyna się w kolumnie E arkusza „Config” tylko dlatego, że mam inne elementy na arkuszu, można go łatwo umieścić we własnym arkuszu.
Kolumna 1 (nazwa kolumny)
Kolumna 2 (kolumna nr)
Kolumna 3 (litera kolumny)
Jestem otwarty na udoskonalenia w celu konwersji numeru kolumny na literę. Ta formuła jest ograniczona, ponieważ obsługuje tylko 78 kolumn. Ale to dla mnie więcej niż wystarczająco.
Teraz Twoje wywołanie funkcji zapytania będzie wyglądać mniej więcej tak:
Zachowaj ładnie sformatowany i nie jest wcale taki zły w zarządzaniu. Jedyną rzeczą, którą ucierpi, będzie zmiana indeksu kolumny zakresu widzenia. Ale to nie powinno się często zmieniać, jeśli w ogóle, biorąc pod uwagę, że jest to zasięg pomocnika.
źródło
Stare pytanie, ale myślę, że to rozwiązanie może być tego warte.
Możesz użyć niestandardowej funkcji skryptu, która pobiera indeks kolumny (tj. A, B, C ...) za pomocą nazwy nagłówka, umożliwiając wykonanie czegoś takiego:
Z
colIndex
funkcją:Które mogą być łatwiejsze w użyciu i czytaniu.
źródło
Oto moje rozwiązanie:
jeśli masz kolumnę o nazwie „miasto”, utwórz gdzieś nową komórkę z indeksem tej komórki:
Następnie możesz utworzyć nazwany zakres dla komórki Z: 2 o nazwie: „nazwa”, Z: 3 = „telefon”, Z: 4 = „miasto”
w zapytaniu możesz następnie napisać:
Możesz to połączyć z rozwiązaniem dopasowania adresu, aby nie trzeba było śledzić uporządkowanych kolumn.
źródło