Страницы: 1
RSS
ВПР не срабатывает сразу, а только после копирования числа в буфер
 
Коллеги, приветствую. Excel 2010.

Странно ведёт себя ВПР, я не пойму, глюк это или фича.
Не все глюки могу повторить, но постараюсь объяснить на словах.
Пример в приложении.
Есть выгруженная из 1С таблица, массивная (пример я обрезал). Мне нужно добавить в неё одно поле из другой таблицы.
Ключевое поле - Инвентарный номер. Проблема в том, что во-первых, поле имеет пробелы в конце, и состоит из цифр, причём может иметь один или несколько нулей в начале. С пробелами не ищет. Убираю пробелы - появляется предупреждение, что число хранится в текстовом формате. При преобразовании в числовой формат теряются нули в начале. Кроме того, часть номеров имеет суффикс .1 и так далее до .20, преобразование, опять же, отрабатывает некорректно.
Преобразование может произойти и случайно при просмотре таблицы.
При этом часть ячеек уже находится в числовом формате. По ним поиск тоже не работает.
Т.е. нужно перевести всё в текст, убрать пробелы. Пробовал и задавать формат ячеек Текстовый, и преобразовывать с помощью функции ТЕКСТ(*;0), но она также отрабатывает некорректно.
В конце концов я добился того, что число, очищенное от пробелов, хранится в текстовом виде, уже не функция и полностью соответствует значению ключевого поля во второй таблице, но нифига не находится ВПРом! В результате - Н/Д.
Внимание: если я ставлю курсор на искомое поле второй страницы и копирую его (Ctrl+C), в основной таблице ПОЯВЛЯЕТСЯ значение!
Ещё раз, я просто копирую в буфер обмена искомую ключевую ячейку, я не вношу изменения в ячейку страницы-получателя, значение которой использует ВПР для поиска. Этот феномен, к сожалению, я не сохранил.

Второй феномен, возможно, как-то связанный с этим, тоже на таблицах, выгруженных из 1C. Мне нужно скопировать строку из первой закладки одной такой таблицы в первую закладку другой таблицы, тоже из 1С, с таким же форматом, в её конец. Т.е. в них есть и другие закладки, сделанные вручную, с другим форматом и содержанием.  
Помечаю строку в первой таблице, Ctrl-C, активизирую целевую страницу, помечаю строку, Ctrl-"+", и неожиданно вместо необходимой строки появляется совершенно другая, возможно предыдущее состояние буфера. Нажимаю Ctrl+Z - появляется сообщение об ошибке - "Невозможно очистить буфер обмена. Возможно, буфер обмена используется другим приложением." Повторил несколько раз - повторяется. Потом вдруг обратил внимание, что на ВТОРОЙ закладке целевой страницы появилась новая строка, которую я копировал... Что это такое? На всякий случай перезапустил Excel , в процессе чего выгрузил Punto Switcher. Пока не повторяется.
Возможно, это глюк Excel? Кто-то сталкивался с подобным? Может ли быть с этим связано странное поведение, когда ВПР работает после копирования в буфер числа?

Прилагаю файл с более простым содержанием - примеры ключевого поля с разным типом содержания. Задача как-то преобразовать в один тип, пригодный для использования с функцией ВПР(), убрав пробелы, не потеряв нули и сохранить в целости суффиксы .1 - .20.
 
Оба значения должны быть одного формата! Если в базе текстом, то и искать нужно текст.
Можно сделать как в базе - применить Trim():
Код
=VLOOKUP(TRIM(B2);Источник!$B$2:$F$6;5;0)
 
Hugo, уже не первый раз наблюдаю преобразование типов к тексту через Trim() и в функциях, и в макросах на этом форуме. В этом есть какой-то особый эзотерический смысл?
Вроде бы есть более очевидные способы превращения данных в текст(CStr() для VBA, &"" для VBA и функций).
 
Я привык не полагаться на волю случая.
Т.е. "бабушек" никто не отменял, как видно из этой темы - они есть даже у 1С :)
 
Правильно ли я понимаю, что если без VBA, то рекомендуете использовать функцию СЖПРОБЕЛЫ()?
Мне кажется, после него сохраняется неоднозначность плюс почему-то ВПР включается только после копирования первого ключа. Возможно, это глюк.
Благодарю, буду использовать этот механизм.
 
Цитата
рекомендуете использовать функцию СЖПРОБЕЛЫ()
значение&""
 
Если есть 100% уверенность, что лишних пробелов не будет (или если в этих пробелах есть скрытый умысел) - тогда конечно можно не тратить время на СЖПРОБЕЛЫ(), а прилеплять пустую строку.
А если внутри есть важные сдвоенные пробелы - тогда или трим всюду, или нигде.
Страницы: 1
Читают тему
Наверх