Как отсортировать запрос по столбцу, содержащему числа в виде текста - PullRequest
1 голос
/ 23 апреля 2020

У меня следующая проблема, когда я выполняю запросы с одной вкладки на другую, а затем пытаюсь отсортировать один из столбцов по рейтингу (AA) и по дням в прошлом (X, что является отрицательным числом, поскольку оно представляет сумму дней после крайнего срока). Запрос выглядит следующим образом:

  =QUERY('(Name of Tab1)'!K7:AA,"SELECT K, N , X, Z, AA WHERE X != 'Closed' ORDER BY X ASC")

Проблема в том, что я получаю сортировки для столбца X, которые выглядят следующим образом:

-279.00
-3.00
-10.00
-106.00
-11.00
-12.00
-12.00
-13.00
-14.00
-144.00
-149.00

Очевидно, это не та сортировка, которую я хочу, и это довольно очевидно, что он читает его как строку, а не int. Однако всякий раз, когда я пытаюсь использовать SQL функции, такие как приведение к типу int, это не работает. Как я могу преобразовать эти значения в int, чтобы он все правильно сортировал? Заранее спасибо.

1 Ответ

3 голосов
/ 24 апреля 2020

Как отсортировать запрос по столбцу, содержащему числа в виде текста

Проблема, с которой вы сталкиваетесь, не имеет ничего общего с "числами" , которые являются отрицательными.
Это потому, что столбцы / ячейки, содержащие числа, отформатированы как текст.
Текстовые ячейки не могут быть отсортированы .

Пожалуйста, используйте следующую формулу:

=QUERY({'Name of Tab1'!K7:W44,ARRAYFORMULA('Name of Tab1'!X7:X44*1),'Name of Tab1'!Y7:AA44}, "SELECT Col1, Col4, Col14 , Col16, Col17 WHERE Col14 is not null and Col1<>'' ORDER BY Col14")

How to sort a query by a column containing numbers as text


Как работает формула:

  1. Мы разбиваем наш диапазон на 3 части
    • Часть перед нашими "числами" столбец 'Name of Tab1'!K7:W44
    • Наш столбец "цифры" ARRAYFORMULA('Name of Tab1'!X7:X44*1)
    • Последняя часть 'Name of Tab1'!Y7:AA44
  2. Поскольку у нас теперь есть 3 диапазона в фигурных скобках {} мы не можем использовать столбец письма. Вместо этого мы должны использовать Col1, Col4 et c, где Col1 - 1-й столбец в нашем объединенном диапазоне , Col4 - наш предыдущий столбец X и т. Д.
  3. О наших "числах" столбец ARRAYFORMULA('Name of Tab1'!X7:X44*1).
    Массив Array, умноженный на 1, превращает каждую текстовую ячейку, содержащую числа, которые должны быть отформатированы как числа и те с текстом (в нашем случае Closed) результат до #VALUE!, который пропускается с использованием WHERE Col14 is not null (вместо нашего оригинального WHERE X != 'Closed')

Используемые функции:

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