← Все курсы · Курс Excel · Все руководства

Как очистить беспорядочные данные в Excel: ОБРЕЗАТЬ, ОЧИСТИТЬ и пространство, которое вы не видите

Найдите его с помощью LEN, назовите его с помощью CODE, удалите его с помощью нужной функции · Часть Analyst Prep Kit

К , аналитик данных · Опубликовано

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

Вот что нужно сделать прямо сейчас в текстовом столбце, от которого зависят ваши формулы. Помещать =LEN(A2) рядом с ним и заполните его. Затем найдите значения, длина которых на один больше символов, которые вы можете посчитать. Этот единственный столбец находит конечные пробелы, ведущие пробелы, неразрывные пробелы и встроенные разрывы строк примерно за десять секунд, прежде чем вы решите что-либо исправить.

Вкратце: ячейка, которая выглядит правильно, все равно может оказаться неправильной строкой, и каждая текстовая функция, которую вы собираетесь использовать, нацелена на определенный тип неправильности. Сначала измерьте, затем выберите функцию.

Две ячейки, читающие одно и то же слово и не равные, — это идея, на которой основано все остальное, поэтому она имеет представление.

Same word, different string Two spreadsheet cells sit side by side near the top of the picture. Both display the word North in identical type, and nothing distinguishes them. Below each cell the same value is shown again, magnified and broken into one small square box per character, the way a character viewer would show it. Under the left cell there are five boxes, holding N, o, r, t and h, and the label LEN 5 sits beneath them. Under the right cell there are six boxes: the same five letters, and then a sixth box which is empty and outlined in amber with a small centred dot to mark that something is there. The label LEN 6 sits beneath those. Between the two magnified strips is a large equals sign with a diagonal stroke through it, meaning the two values are not equal. The picture makes the point without words: the difference between the two cells exists only in the sixth box, and the sixth box is invisible at normal size. North North Nor th LEN 5 Nor th LEN 6 =
Обе ячейки отображают север. В одном из них есть шестой персонаж. Ничего на экране не показывает, что это такое, поэтому каждое сравнение, поиск и SUMIFS в книге рассматривает их как два разных региона.
Что вы узнаете
  1. Чего это стоит: 865 человек отсутствуют в общем объеме по региону
  2. Найдите это, прежде чем исправлять: LEN и CODE.
  3. TRIM: что удаляет, а что сжимает
  4. Пробел TRIM не удалит
  5. ЧИСТЫЙ, и два слова, которые оно объединяет
  6. СПРАВЕДЛИВОЕ, ВЕРХНЕЕ и НИЖНЕЕ, и названия СОБСТВЕННЫЕ ошибаются.
  7. Числа, хранящиеся в виде текста
  8. Очистите новый столбец, а затем докажите, что это работает.
  9. Полное до и после
  10. Краевые корпуса, выдержавшие очистку
  11. Почему это работает
  12. Использование этого в вашем собственном проекте
  13. Все на одном экране
Каждый результат на этой странице реален. Таблица заказов из шестнадцати строк, используемая в этом наборе руководств, была скопирована, а затем намеренно повреждена шестью конкретными способами, при этом каждая формула запускалась в Excel, а ее выходные данные копировались обратно.

1. Чего это стоит: 865 человек отсутствуют в общем объеме по региону

Пять из шестнадцати орденов относятся к Северному региону, и их общее количество составляет 2495. Две из этих пяти строк прибыли с проблемой, которую вы не видите: одна имеет завершающий пробел после «Север», а другая заканчивается неразрывным пробелом, символом, который веб-страница или документ Слово оставляет после себя, когда через него вставляется текст.

Ничто на экране не отличается. Вот что написано в трудовой книжке.

North revenue, clean data                       2495
North revenue, same data with two bad cells     1630
Rows that are exactly "North" out of five          3
Distinct regions, clean                            4
Distinct regions, messy                            6

Всего осталось 865, то есть 425 плюс 440, два затронутых заказа. И количество регионов увеличилось с четырех до шести, потому что «Север» и «Север» плюс неразрывный пробел — это каждый отдельный регион с точки зрения Эксель.

Скажите вслух, какой из этих двух симптомов вы заметите в реальной рабочей тетради первым. Недостающее число 865 невидимо; ничто не говорит о том, что общая сумма должна была быть больше. Количество регионов — это показатель, и именно по этой причине первое, что нужно сделать с любым новым текстовым столбцом, — это подсчитать его отдельные значения и спросить, является ли это число тем числом, которое вы ожидали.

2. Найдите проблему, прежде чем исправлять: LEN и CODE.

Две формулы делают весь диагноз, и ни одна из них ничего не меняет.

LEN подсчитывает символы и превращает невидимую проблему в число.

=LEN(D8)      6      you can see five letters
=LEN(D12)     6      you can see five letters

Оба слишком длинные. Этого достаточно, чтобы понять, что что-то не так, и недостаточно, чтобы знать, что делать, поскольку у двух ячеек разные проблемы и нужны разные решения. CODE дает идентификацию персонажа в виде числа, поэтому, указав его на последний символ, можно назвать виновника.

=CODE(RIGHT(D8,1))      32     an ordinary space
=CODE(RIGHT(D12,1))    160     a non-breaking space

32 — пробел. 160 — персонаж, созданный   на веб-странице и в Слово, когда два слова находятся в одной строке. Они выглядят одинаково в каждом шрифте. Только один из них удаляется функцией, к которой все обращаются первыми.

Сохраняйте эти две формулы скорее как привычку, а не как спасение. =LEN(A2) заполнил столбец и =CODE(RIGHT(A2,1)) в одной слишком длинной строке появляется тридцатисекундный диагноз, который превращает «поиск не работает» в «в строке 12 есть символ 160».

3. TRIM: что удаляет, а что сжимает

Перед объяснением: TRIM везде описывается как удаление пробелов. Скажи, что, по твоему мнению, это делает, чтобы "Dana Reyes", с тремя пробелами посередине.

=TRIM("Dana   Reyes")       Dana Reyes
=LEN(TRIM("Dana   Reyes"))          10

Он выполняет две работы, а не одну. Он полностью удаляет пробелы в начале и конце и сжимает любую серию пробелов. внутри текст до одного пробела. Десять символов: девять букв и один пробел. Это второе поведение обычно является тем, чего вы хотите, а иногда и нет, поэтому его стоит знать, а не открывать.

В ячейке с конечным пространством все работает точно так, как заявлено.

=LEN(D8)            6
=LEN(TRIM(D8))      5

Один символ исчез, и значение теперь соответствует всем остальным «северам» в столбце. Если ваша проблема в обычных пространствах, то это все решение, и именно поэтому TRIM вокруг ключа поиска — это стандартное первое, что нужно попробовать, когда поиск возвращает #N/A по значению, которое вы можете увидеть.

4. Пробел TRIM не уберет

Перед объяснением: другая плохая ячейка заканчивается на символ 160. Предскажите, что TRIM делает это.

=LEN(D12)              6
=LEN(TRIM(D12))        6
=LEN(CLEAN(D12))       6

Ничего. Ни одна из функций не касается его. TRIM удаляет символ 32 и только символ 32, и CLEAN удаляет управляющие символы с номерами от 0 до 31, включая 160. Это самая распространенная причина, по которой кто-то говорит: «Я уже обрезал это, но оно все еще не соответствует».

Исправление состоит в том, чтобы сначала преобразовать символ в обычный пробел, а затем обрезать.

=TRIM(SUBSTITUTE(D12, CHAR(160), " "))

=LEN(  that  )                          5
=  that  = "North"                   TRUE

SUBSTITUTE берет текст, вещь, которую нужно найти, и вещь, которую нужно поставить на место, и заменяет каждое вхождение. Вложение его внутрь TRIM дает одну формулу, которая обрабатывает оба типа пространства одновременно, и эту версию стоит сохранить.

Сделайте эту формулу очистки по умолчанию для любого текстового столбца, поступающего из-за пределов вашей книги:

=TRIM(SUBSTITUTE(A2, CHAR(160), " "))

Это ничего не стоит для данных, которые уже были очищены, и экономит время для данных, которые еще не были очищены.

5. ЧИСТЫЙ, и два слова, которые оно объединяет

CLEAN удаляет непечатаемые управляющие символы, наиболее распространенным из которых является разрыв строки, который кто-то нажал Альт+Ввод, или который прибыл в поле, экспортированное из другой системы.

Внутри одного из имен представителей в «грязной» копии есть разрыв строки, поэтому в ячейке имя отображается в двух строках. Вот что происходит.

=LEN(C10)                    9
=LEN(CLEAN(C10))             8
=CLEAN(C10) = "OwenPark"  TRUE

Прочтите последнюю строчку дважды. CLEAN удалил разрыв строки, а не заменил его, поэтому «Оуэн» и «Парк» теперь объединены в одно слово без пробела. Ячейка больше не выглядит сломанной, что еще хуже, чем просто выглядеть сломанной, поскольку имя теперь неверно и выдерживает каждую последующую проверку.

Разрыв строки является разделителем, поэтому он должен стать пробелом, а не ничем.

=TRIM(SUBSTITUTE(C10, CHAR(10), " "))       Owen Park

Символ 10 — это перевод строки, а символ 13 — возврат каретки; текст из старых систем может содержать и то, и другое. Если вы очищаете столбец, который может содержать многострочные примечания, замените оба и используйте только CLEAN когда вы искренне хотите, чтобы персонаж исчез, а не был заменен.

6. СОБСТВЕННОЕ, ВЕРХНЕЕ и НИЖНЕЕ, и названия СОБСТВЕННЫЕ ошибаются.

В другом случае два одинаковых значения становятся двумя разными. UPPER и LOWER звучат именно так, и в них нет никаких сюрпризов. PROPER делает первую букву каждого слова заглавной, а их несколько.

=PROPER("owen park")      Owen Park       right
=PROPER("o'brien")        O'Brien         right
=PROPER("mcdonald")       Mcdonald        wrong
=PROPER("IBM")            Ibm             wrong

Он правильно определяет регистр апострофов, что действительно полезно. Он не может знать, что в «Макдоналдсе» есть заглавная буква посередине, и он с радостью уничтожит уже правильную аббревиатуру, потому что он применяет одно правило к каждому встречному слову.

Итак, правило для имен и кодов: никогда не бегайте. PROPER над колонкой реальных имен и считайте ее почищенной. Используйте его для данных, которые, как вы знаете, состоят из одного регистра и обычных слов, проверяйте вывод на глаз и сохраняйте исходный столбец, чтобы ущерб был обратимым. В любом случае для целей сопоставления вам редко нужны красивые заглавные буквы; сравнения в Excel уже игнорируют регистр, поэтому UPPER с обеих сторон — это более безопасный способ добиться согласия, чем пытаться сделать так, чтобы каждое значение выглядело красиво.

Представьте на секунду свою худшую колонку: имена клиентов, имена поставщиков, коды продуктов, набранные четырьмя разными людьми. Сколько из этих записей будет PROPER незаметно повредить, и заметит ли кто-нибудь до того, как посылка будет отправлена?

7. Числа, хранящиеся в виде текста

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

=SUM(clean Units)      101
=SUM(messy Units)       95
=COUNT(messy Units)     15
=ISTEXT(that cell)    TRUE

SUM пропускает текст, поэтому общая сумма сокращается ровно на пропущенное значение, и COUNT говорит 15, где 16 рядов. Этот COUNT — самый дешевый детектор: поместите =COUNT(range) рядом с любым числовым столбцом и сравните его с количеством строк. Несоответствие — это текст, притворяющийся числом.

Три способа исправить это в порядке того, насколько они вам должны понравиться. Лучше всего исправить импорт, чтобы он никогда не поступал в виде текста, что для CSV означает объявление типов столбцов в диалоговом окне импорта, а не двойной щелчок по файлу; диалоговое окно импорта, которое удаляет ваши почтовые индексы охватывает тот же диалог с противоположной стороны. Далее лучше всего преобразовать в новый столбец с помощью =VALUE(A2), который возвращает действительное число, или умножить на 1, что тоже работает. В крайнем случае, выберите столбец, щелкните предупреждающий треугольник и выберите «Преобразовать в число», при этом данные редактируются на месте и не остается никаких записей о том, что это произошло.

Одно предупреждение о VALUE: это терпит неудачу с #VALUE! для всего, что не является чистым числом, включая значение с случайным пробелом или символом валюты. Эта ошибка полезна, поскольку она указывает на строки, требующие участия человека. Обертывание его, чтобы скрыть неудачу, вернет вас туда, где скрытие ошибки тебя всегда ставит.

8. Очистите новый столбец и докажите, что это работает.

Два рабочих правила имеют большее значение, чем любая из функций.

Никогда не чистите на месте. Поместите формулу очистки в новый столбец рядом с исходным, который называется Region_clean или что-то подобное, и направьте свой анализ на это. Перезапись необработанного столбца уничтожает единственное свидетельство того, что поступило, поэтому, если в следующем месяце цифры не будут соответствовать исходной системе, сравнивать будет не с чем. Это также делает очистку повторяемой: вставляется файл следующего месяца, и столбец пересчитывается.

Докажите это, а не предполагайте это. Уборка — это единственный вид деятельности, при котором работа и чек выглядят одинаково, поэтому люди пропускают чек. Три формулы, выполняемые после каждого прохода:

=COUNTA(UNIQUE(Region_clean))     distinct values, is it the number you expect?
=SUMPRODUCT(--(LEN(A2:A17)<>LEN(TRIM(A2:A17))))    rows still carrying stray spaces
=COUNT(Units)  against  =COUNTA(Units)             numbers against everything

В «грязной» копии после очистки количество отдельных регионов увеличилось с 6 до 4, а общее количество северных регионов вернулось к 2495. Эти две цифры являются доказательством. Без них колонка будет выглядеть чище, а это совсем не то же самое.

Когда значения различаются так, что ни одна функция не может совместить «ООО "Акме"» с «АКМЕ ЛИМИТЕД» с «Акме Ко», вы перешли от очистки к Разрешение объекта, это другая работа с другим методом.

Полное до и после

Те же шестнадцать заказов, тот же вопрос: что продал Норт?

До

=SUMIFS(H2:H17, D2:D17, "North")        1630
distinct regions                            6
Units total                                95

Три номера, все неправильные, ни один из них не отмечен. В региональном отчете не хватает 865 единиц, на стержне есть два несуществующих региона, а шесть единиц запасов исчезли из общего количества, которое все еще выглядит вполне разумным.

после

# one new column per dirty column, originals untouched
Region_clean  =TRIM(SUBSTITUTE(D2, CHAR(160), " "))
Rep_clean     =TRIM(SUBSTITUTE(C2, CHAR(10),  " "))
Units_num     =VALUE(F2)

# the three checks, on the sheet, not in your head
distinct regions   =COUNTA(UNIQUE(Region_clean))       4
North revenue      =SUMIFS(H2:H17, Region_clean, "North")   2495
Units              =COUNT(Units_num) equals row count      16

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

Краевые корпуса, выдержавшие очистку

Шесть, которые прошли очевидные исправления.

Другой невидимый персонаж. Обычно используется значение 160, но пробелы нулевой ширины и указатели направления также перемещаются при копировании и вставке. Если LEN после замены 160 все еще слишком долго, используйте =CODE(MID(A2,n,1)) пройти и назвать то, что на самом деле там сидит.

Апострофы и кавычки, отличные от тех, которые вы набрали. Фигурный апостроф и прямой — это разные символы, поэтому «О’Брайен» из Слово никогда не совпадает с «О’Брайен» на вашей клавиатуре. Прежде чем сравнивать, замените одно на другое.

Ведущий апостроф, который вы не видите. Ввод текста '1001 заставляет Excel хранить текст и скрывать апостроф. LEN не считает это и ISTEXT сообщает об этом, поэтому существует числовая проверка в седьмом разделе.

Уборка, которая изменила смысл. TRIM свертывание внутренних прогонов подходит для имен и неправильно для всего, где интервал несет информацию, например, для кодов фиксированной ширины. Прежде чем применять его ко всей колонке, сверьте образец с источником.

Формулы, которые теперь указывают на необработанный столбец. Добавление чистого столбца ничего не дает, пока все последующие его не прочитают. Найдите в книге ссылку на старый столбец; наполовину переписанная рабочая тетрадь хуже, чем незавершенная, потому что обе половины расходятся во мнениях.

Текст, который выглядит числовым в одном месте, а не в другом. После неправильного импорта столбец может состоять наполовину из чисел, наполовину из текста, и в каждой формуле эти половины ведут себя по-разному. Сравнивать COUNT с COUNTA вместо чтения столбца и никогда не доверяйте выравниванию по правому краю как доказательству, потому что формат может его переопределить.

Почему это работает

Все это не является плохим поведением Эксель. Ячейка содержит строку символов, а две строки равны, только если каждый символ совпадает, и это единственное определение, которое может использовать компьютер. Несоответствие между этим определением и человеческим определением, где «Север» и «Север», очевидно, являются одним и тем же словом. Каждый метод на этой странице — это способ заставить два определения согласоваться, и причина, по которой диагноз стоит на первом месте, заключается в том, что вы не можете выбрать правильную функцию, пока не узнаете, какой символ присутствует.

Это также не маленькая побочная задача. Исследования того, как на самом деле тратят свое время аналитики, неоднократно показывали, что обнаружение и устранение проблем с данными занимает значительную часть общих усилий, и что самая сложная часть — не применение преобразования, а определение того, какое преобразование необходимо; Работа Рэнглер создала интерактивный инструмент специально для преодоления разрыва между обнаружением проблемы и указанием ее решения (Кандель, Пэпке, Хеллерштейн & Хир, 2011, Материалы конференции SIGCHI по человеческому фактору в вычислительных системах, 3363–3372). Столбец LEN во втором разделе представляет собой низкотехнологичную версию той же идеи: сделать невидимую проблему видимой, прежде чем что-либо решать.

Более широкое предупреждение заключается в том, что электронные таблицы изменяют данные сами по себе, и эти изменения сохраняются. Циманн и его коллеги обнаружили, что значительная часть опубликованных дополнительных файлов по геномике содержала имена генов, которые Excel автоматически преобразовывал в даты или числа в статьях, прошедших рецензирование, поскольку ничто в преобразованном значении не объявляет себя преобразованным (Циманн, Эрен и Эль-Оста, 2016, Геномная биология, 17, 177). Число, хранящееся в виде текста, и имя, хранящееся в виде даты, представляют собой тот же класс проблем, что и конечный пробел: отображение в порядке, а значение — нет.

Одно замечание в шпаргалке ниже. Он создан для того, чтобы его просматривали и вспоминали, а не перечитывали, потому что попытка восстановить что-то обеспечивает заметно лучшее запоминание, чем повторное изучение, даже если второй вариант кажется более продуктивным, пока вы его делаете (выбирать карпа & Тупой, 2011, Наука, 331(6018), 772–775).

Использование этого в вашем собственном проекте

Очистка всей унаследованной книги утомительна, и вы остановитесь на втором столбце. Вместо этого сделайте это по порядку.

  1. Подсчитайте различные значения в каждом текстовом столбце, по которому вы группируете или фильтруете. =COUNTA(UNIQUE(range)). Любое значение выше, чем вы ожидали, — это то, где есть работа.
  2. Добавьте столбец LEN рядом с худшим. и отсортируйте по нему. Проблемы поднимаются наверх в один клик.
  3. Назовите персонажа с помощью КОДА перед выбором функции. Тридцать два и сто шестьдесят нуждаются в разных исправлениях.
  4. Очистите в новый столбец, всегда, с =TRIM(SUBSTITUTE(A2,CHAR(160)," ")) как по умолчанию и дополнения только при наличии доказательств.
  5. Сравните COUNT с количеством строк в каждом числовом столбце, чтобы поймать числа, хранящиеся в виде текста.
  6. Повторно запустите отдельный подсчет и затронутую сумму., и запишите оба числа. Это доказательство того, что пас сработал, и это занимает десять секунд.

Если у вас под рукой есть бумага, один дополнительный эскиз стоит пяти минут. Нарисуйте одно из значений вашей задачи в виде ряда прямоугольников, по одному квадрату на символ, и поставьте точку в каждом квадрате, где есть пробел. Большинство людей во время рисования обнаруживают, что не знают, сколько прямоугольников там должно быть, и именно эту неопределенность устраняет столбец LEN.

Подробнее об этом и еще что-нибудь подобное. Все инструкции находятся в одном месте на индекс направляющих: Excel, SQL, Python и связанные с ними методы работы.

Все на одном экране

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

вещьЧто он делает
LEN(A2)Считает символы. Превращает невидимую проблему в число.
CODE(RIGHT(A2,1))Называет последнего персонажа. 32 — пробел, 160 — неразрывный пробел.
TRIMУдаляет начальные и конечные пробелы и сжимает внутренние пробеги до одного.
Чего не хватает TRIMСимвол 160. Длина не меняется.
CLEANУдаляет управляющие символы от 0 до 31. Также пропускает 160.
CLEAN при разрыве строкиУдаляет его, а не заменяет. Оуэн-Парк становится Оуэн-Парком.
Исправление по умолчанию=TRIM(SUBSTITUTE(A2,CHAR(160)," "))
Разрывы строкSUBSTITUTE(A2,CHAR(10)," ")и CHAR(13), если файл старше.
PROPERС большой буквы пишет каждое слово. Управляет О'Брайеном, разрушает Макдональдс и IBM.
UPPER / LOWERБезопасный. Используйте для принудительного согласования двух столбцов.
Числа как текстSUM пропускает их молча. COUNT терпит неудачу.
Исправляем их=VALUE(A2) в новом столбце или исправьте импорт.
Отдельная проверка=COUNTA(UNIQUE(range)). Больше, чем ожидалось, означает почти дубликаты.
Проверка случайного пространства=SUMPRODUCT(--(LEN(r)<>LEN(TRIM(r))))
Где чиститьНовая колонка. Никогда не используйте необработанные данные.
Помимо очисткиЦенности, для согласования которых требуется суждение, — это разрешение сущности.
Единственная привычка, которую следует сохранить. Подсчитайте различные значения текстового столбца, прежде чем использовать его, и сравните это количество с ожидаемым числом. Четыре региона, которые возвращаются как шесть, — это самый дешевый и ранний сигнал, который вы когда-либо получите, и он стоит одну формулу. Если столбец ведет себя не так, как описано на этой странице, существует общая ошибка. шлейф диагностики на предмет застревания.

Еще одна мысль, и мне бы искренне хотелось услышать ответы других людей. Больше всего мне стоила колонка поставщиков, в которой из электронного письма было вставлено одно значение, поэтому один поставщик появлялся дважды в каждом отчете за квартал, и обе записи выглядели одинаково на экране. Что скрывалось в ваших данных, и что в итоге заставило вас посчитать символы?

Ссылки

Поиск завершается неудачей по имени, которое выглядит идентично на экране.

Excel для аналитиков это 378 страниц, ОБРЕЗКА, ОЧИСТКА и порядок очистки, который предотвращает сбой совпадения по причинам, которые вы не видите, с практическими вопросами, которые печатают ответ и причину, по которой он правильный.

Excel для аналитиков, 19 долларов США →
Практикуйтесь на данных, которые намеренно загрязнены.

тот Курс Excel дает вам повторения: столбцы, заполненные точными проблемами на этой странице, флэш-карточки, на которых функция удаляет какой символ, и пробный экзамен, который просит вас предсказать общую сумму, прежде чем вы очистите столбец. Теперь вы владеете методом; комплект - это практика. Ничего устанавливать, учетная запись не требуется.

Откройте набор Excel →