Как улучшить мой запрос с помощью выражения, подобного индексу? - PullRequest
1 голос
/ 02 октября 2019

Ссылка на лист
Контекст: с вызовом API Я получаю данные прейскуранта из Airtable в Sheets. В таблицах Airtable связаны, поэтому я вижу первичный ключ, сгенерированный Airtable, а не фактические данные поля. Таблицы, в которых можно найти эти данные, можно найти на отдельных вкладках, созданных с помощью вызова API.

Задача: Я пытаюсь создать прайс-лист с раскрывающимся полем, в котором создаются соответствующие данные. как только модель выбрана. Этот запрос используется для этого:

=UNIQUE(QUERY(models,"SELECT F, E, R, R*(1-0.15), R*0.15, R*1.07 WHERE J = '"&$A$1&"' AND (F = 'rec99pY85FrcpKWmh' OR F ='reccliFdf3cbYeADx') AND F <> '' LABEL R 'Retail excl. VAT', R*(1-0.15) 'Store Price', R*0.15 'Margin', R*1.07 'Retail incl. VAT' FORMAT R '฿ ###,##0', R*(1-0.15) '฿ ###,##0', R*0.15 '฿ ###,##0', R*1.07 '฿ ###,##0' ",1))

Мне нужно заменить строки по материалу и размеру соответствующими метками. Я могу сделать это по следующей формуле:

=SUBSTITUTE(B3,B3,index(indexBodySizes,match(B3:B13,idSizes,0),6))

для размеров и

=SUBSTITUTE(A3,A3,index(indexBodyMaterials,match(A3:A13,idMaterials,0),1))

для материалов.

Вопрос: Как объединить функциональность этих отдельных подрешения в запросе?

1 Ответ

0 голосов
/ 02 октября 2019
=ARRAYFORMULA({UNIQUE(QUERY(models, 
 "select F,E,R,R*(1-0.15),R*0.15,R*1.07 
  where  J = '"&$A$1&"' 
    and (F = 'rec99pY85FrcpKWmh' 
     or  F = 'reccliFdf3cbYeADx') 
    and  F <> '' 
  label  R 'Retail excl. VAT',R*(1-0.15)'Store Price',R*0.15'Margin',R*1.07'Retail incl. VAT' 
  format R '฿ ###,##0',R*(1-0.15) '฿ ###,##0',R*0.15 '฿ ###,##0',R*1.07 '฿ ###,##0'", 1)), 
 {"Sizes"; IFERROR(VLOOKUP(INDEX(UNIQUE(QUERY(models, 
 "select F,E,R,R*(1-0.15),R*0.15,R*1.07 
  where  J = '"&$A$1&"' 
    and (F = 'rec99pY85FrcpKWmh' 
     or  F = 'reccliFdf3cbYeADx') 
    and  F <> '' 
  label  R'',R*(1-0.15)'',R*0.15'',R*1.07''", 0)),,2), Sizes!A:G, 7, 0))},
 {"Materials"; IFERROR(VLOOKUP(INDEX(UNIQUE(QUERY(models, 
 "select F,E,R,R*(1-0.15),R*0.15,R*1.07 
  where  J = '"&$A$1&"' 
    and (F = 'rec99pY85FrcpKWmh' 
     or  F = 'reccliFdf3cbYeADx') 
    and  F <> '' 
  label  R'',R*(1-0.15)'',R*0.15'',R*1.07''", 0)),,1), Materials!A:B, 2, 0))}})

0


=ARRAYFORMULA({{"Material"; IFERROR(VLOOKUP(INDEX(UNIQUE(QUERY(models, 
 "select F,E 
  where  J = '"&$A$1&"' 
    and (F = 'rec99pY85FrcpKWmh' 
     or  F = 'reccliFdf3cbYeADx') 
    and  F <> ''", 0)),,1), Materials!A:B, 2, 0))},
{"Size"; IFERROR(VLOOKUP(INDEX(UNIQUE(QUERY(models, 
 "select F,E
  where  J = '"&$A$1&"' 
    and (F = 'rec99pY85FrcpKWmh' 
     or  F = 'reccliFdf3cbYeADx') 
    and  F <> ''", 0)),,2), Sizes!A:G, 7, 0))},
UNIQUE(QUERY(models, 
 "select R,R*(1-0.15),R*0.15,R*1.07 
  where  J = '"&$A$1&"' 
    and (F = 'rec99pY85FrcpKWmh' 
     or  F = 'reccliFdf3cbYeADx') 
    and  F <> '' 
  label  R 'Retail excl. VAT',R*(1-0.15)'Store Price',R*0.15'Margin',R*1.07'Retail incl. VAT' 
  format R '฿ ###,##0',R*(1-0.15) '฿ ###,##0',R*0.15 '฿ ###,##0',R*1.07 '฿ ###,##0'", 1))})

0

...