Как я могу объединить несколько функций с ArrayFormula - PullRequest
0 голосов
/ 01 марта 2020

У меня есть формула ниже, использующая ImportRange и Query вместе с Join и Split, работающими правильно:

=join(" / ", QUERY(IMPORTRANGE("Google-Sheet-ID","RawData!A:AC"),"select Col25 where Col1 = " & JOIN(" OR Col1 = ", split(V2:V,"+")), 0))

Кроме того, у меня есть ниже ArrayFormula с * Функция 1009 * работает без сбоев:

=ARRAYFORMULA(if(len(V2:V)=0,,split(V2:V,"+")))

Но когда я попытался объединить их, используя следующую формулу:

=ARRAYFORMULA(if(len(V2:V)=0,,join(" / ", QUERY(IMPORTRANGE("Google-Sheet-ID","RawData!A:AC"),"select Col25 where Col1 = " & JOIN(" OR Col1 = ", split(V2:V,"+")), 0))))

Это не удалось, и я выдал следующую ошибку:

Ошибка Функция Значение параметра SPLIT 1 должно быть непустым.

Здесь - это мой лист для тестирования.

ОБНОВЛЕНИЕ

Я изменил его на:

=ARRAYFORMULA(if(len(C2:C)=0,,JOIN(" OR Col1 = ", ARRAYFORMULA(if(len(C2:C)=0,,split(C2:C,"+"))))))

Итак, моя полная формула:

=ARRAYFORMULA(
if(
   len(C2:C)=0,,
join(" / ", 
QUERY(
     IMPORTRANGE("14iNSavtvjRU0XipPWIMKyHNwXTA85P_CafFTsIPHI6c","RawData!A:AC"),"select Col25 where Col1 = " & 
        ARRAYFORMULA(
           if(len(C2:C)=0,,
              JOIN(" OR Col1 = ", 
                  ARRAYFORMULA(
                     if(
                         len(C2:C)=0,,split(C2:C,"+")
                      )
                  )
               )
            )
        ),

    0
))))

А теперь получаю ошибку:

Ошибка Диапазон JOIN должен содержать одну строку или один столбец.

Ответы [ 2 ]

1 голос
/ 01 марта 2020

Я полагаю, что эта формула на вкладке под названием MK.Testing извлечет информацию, на которую вы надеетесь.

=QUERY(IMPORTRANGE("14iNSavtvjRU0XipPWIMKyHNwXTA85P_CafFTsIPHI6c","RawData!A:AC"),"select Col25 where Col1="&TEXTJOIN(" or Col1=",TRUE,A2:A))

Я думаю, что вы, возможно, слишком усложняли вещи? Эта формула просто формирует текстовую строку из идентификаторов отправления для использования в запросе. одна вещь, которая может сбить вас с толку - это то, что query () очень специфичен для типа данных в столбце. Идентификаторы отправления могут быть числами или комбинациями цифр, но не обоими. То есть, если у вас есть идентификаторы отправления, содержащие буквы, а другие - нет, получить запрос, который будет работать, будет сложнее. (хотя и не невозможно). Однако, чтобы помочь вам, важно, чтобы ваши идентификаторы образцов как можно точнее отражали настоящие идентификаторы.

0 голосов
/ 03 марта 2020

Как насчет этого с помощью скрипта приложений? Вы можете получить значения из Sheet2, идентификаторов отгрузки и идентификаторов из MK.Testing и сравнить их. Если они совпадают, вы копируете ETA в столбец C MK. Тестирование:

function myFunction() {
  var sprsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet2 = sprsheet.getSheetByName("Sheet2");
  var mkTesting = sprsheet.getSheetByName("MK.Testing");

  var shipmentId = sheet2.getRange("A2:A").getValues();
  var idList = mkTesting.getRange("A2:A").getValues();

  for (var i = 0; i < shipmentId.length; i++){

    for (var j = 0; j < idList.length; j++){

      if (idList[j][0] == ""){break;} //Stops if there is an empty cell in Mk.Testing's column A

      if (idList[j][0] === shipmentId[i][0]){

        var eta = sheet2.getRange("E"+(i+2)).getValue();

        mkTesting.getRange("C"+(j+2)).setValue(eta);

      }
    }
  }
}

Рекомендации:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...