Как разобрать одно значение из строки JSON или CSV в Microsoft Excel? Или Google Sheets? - PullRequest
0 голосов
/ 23 января 2020

У меня будут сотни ячеек, которые будут использовать вызов веб-службы для получения данных о запасах. Однако данные возвращаются только в формате JSON или CSV. Используя один пример, как я могу получить только значение "uHigh" из каждой строки Dynami c JSON или CSV, учитывая приведенный ниже пример и зная, что длина числового значения может каждый раз отличаться?

[{"date":"2020-01-22","uClose":1485.95,"uOpen":1491,"uHigh":1503.21,"uLow":1484.93,"uVolume":1610846,"close":1485.95,"open":1491,"high":1503.21,"low":1484.93,"volume":1610846,"change":1.55,"changePercent":0.1044,"label":"Jan 22","changeOverTime":0.001044}]

или я могу проанализировать CSV, например

"date,uClose,uOpen,uHigh,uLow,uVolume,close,open,high,low,volume,change,changePercent,label,changeOverTime,symbol
2020-01-22,1485.95,1491,1503.21,1484.93,1610846,1485.95,1491,1503.21,1484.93,1610846,1.55,0.1044,Jan 22,0.001044,GOOG"

Excel предлагает метод FILTER XML, но не один для JSON или CSV, насколько мне известно, так что я могу вставить в свой " = что-то здесь "значение ячейки для анализа только значения uHigh?

Я буду использовать Google Sheets, если это поможет.

Ответы [ 3 ]

1 голос
/ 24 января 2020

Извлечь значение после формулировки "uHigh"

Поместить JSON format данные типа в A2

В B2, ввести формулу:

=LOOKUP(9^9,0+MID(A2,SEARCH("uHigh",A2)+7,ROW($1:$99)))

enter image description here

1 голос
/ 24 января 2020

Если вы хотите извлечь из JSON, вы можете использовать REGEXEXTRACT следующим образом:

  • Положите JSON в A1
  • Поставьте нужный ключ для поиска в B1
  • Поместите эту формулу в C1: =REGEXEXTRACT(A1, """" & B1 & """ *: *(.*?),")

Вы можете проверить это, изменив ключ поиска в B1.

enter image description here

Если вы хотите извлечь из CSV, вы можете использовать это:

  • Поместите CSV в A1
  • Введите ключ, который вы хотите найти в B1
  • Введите эту формулу в C1: =VLOOKUP(B1, TRANSPOSE(ARRAYFORMULA(SPLIT(TRANSPOSE(SPLIT(A1, char(10))), ","))), 2, FALSE)

Вы можете проверить это, изменив ключ поиска в B1.

Отказ от ответственности : Обе они будут работать только в том случае, если JSON / CSV являются действительными / стандартными форматами. Несколько вещей, на которые следует обратить внимание:

  • Значение JSON сбой, если значение указано в кавычках и содержит запятую. Например: {"key" : "value, value"}.
  • Ошибка CSV произойдет, если разделитель полей, запятая, также используется в ключе / значении.

enter image description here

0 голосов
/ 24 января 2020

Я узнал, что можно использовать Split для строки CSV, а затем вытащить нужный элемент из полученного массива строк по номеру. Это было функционализировано другим человеком, как показано здесь:

найдите n-й элемент в списке через запятую

Конечно, было бы неплохо сделать это в один простой вызов.

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