6

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

Я думал, что какая-то предыдущая версия Excel или, может быть, другая электронная таблица из далекого прошлого сделает это по умолчанию - то есть, если вы выберете столбец с помощью foo и bar и выберете эквивалент "fill down", вы получите что в колонке ХОЧУ. На самом деле я получаю в Excel столбец GET.

HAVE:            WANT:           GET:
foo     1        foo     1       foo     1
        2        foo     2       foo     2
bar     1        bar     1       foo     1
        2        bar     2       foo     2
        3        bar     3       foo     3

Я беспокоюсь, что для этого может понадобиться макрос, чтобы сделать его правильно. Раньше я был вундеркиндом с макросами Excel, а потом вдруг все они были в VB.

Моя резервная позиция будет состоять в том, чтобы выгрузить все это в CSV и написать скрипт на Python, но если есть какой-то способ сделать это в Excel, это было бы гораздо предпочтительнее. Даже если это включает несколько различных ручных шагов, это нормально; просто не один шаг на группу строк. То есть процесс «скопировать столбец, сделать X в него, вырезать и вставить его обратно» будет работать, но "делать X для каждого вхождения foo или bar" не будет. Файлы слишком велики для этого.

Любые мысли приветствуются!

2 ответа2

7

Г-н Эксель имеет ответ для версий Excel до предварительной ленты. Ниже приведены инструкции для Excel 2007. С foo/bar в столбце A и вашими данными в столбце B:

  1. Выделите все данные в столбце А сверху вниз.
  2. Нажмите на Главная-> Найти и выбрать-> Перейти к спец.
  3. Нажмите "Пробелы" и нажмите "ОК". (На этом этапе должны быть выбраны все пробелы в столбце, и ячейка A2 должна быть активной ячейкой.)
  4. Нажмите «=», а затем нажмите вверх, чтобы выбрать ячейку A1.
  5. Нажмите Ctrl Enter, чтобы скопировать формулу во все выделенные ячейки.

Необязательный шаг 7. Если вам нужны только значения, скопируйте весь столбец и "Вставьте специальные" только значения сверху.

2

Чтобы сделать это вручную:

Добавьте столбец (B) между столбцом foo-bar (скажем, A) и числовым столбцом (теперь C).

Формула в B1 - это что-то вроде =A1 , в B2 (и копируется до конца данных) =if(A2="",B1,A2) . Столбец B теперь имеет столбцы foo почти так, как вы хотите, но они являются результатом формул, а не текста.

Скопируйте столбец B и paste special его в столбец A в качестве значений.

Теперь вы можете удалить столбец B.

Если вы поймете, что это возможно сделать быстрее, чем записать описание, но то, предпочитаете ли вы скрипт на Python или нет, будет зависеть от количества электронных таблиц ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .