Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2009, 09:45   #1
Exo
Форумчанин
 
Аватар для Exo
 
Регистрация: 25.09.2007
Сообщений: 102
Печаль формат ячеек VS. ВПР

Ув. Форумчане, доброго времени суток.

Возникла такая проблема, много людей в конторе используют Excel для работы и постоянно обмениваются своими файлами друг с другом, НО общей культуры работы не имеют. Самая большая проблема это разный формат ячеек. Из-за этой разницы не корректно работает например такая замечательная функция как ВПР (использую ВПР на своем листе и хочу подтянуть данные скажем из файла коллеги, у меня текстовое значение у коллеги цифровое, или еще хуже смешенное, скажем и числовое и текстовое – жуткие проблемы, т.к. проверить визуально более 2000 строк нереально и шанс ошибки очень велик).

Вопрос, нет ли способа привести весь скажем выделенный диапазон к текстовому формату? Просто выделить диапазон и из меню «формат ячеек» поставить текстовый формат к решению проблемы не приводит.
Exo вне форума Ответить с цитированием
Старый 29.04.2009, 10:16   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

После того, как Вы изменили формат выделенного диапазона, не снимая выделения, скопируйте этот диапазон и вставьте туда же при помощи специальной вставки, указав "значения".
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 29.04.2009, 11:07   #3
Exo
Форумчанин
 
Аватар для Exo
 
Регистрация: 25.09.2007
Сообщений: 102
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
После того, как Вы изменили формат выделенного диапазона, не снимая выделения, скопируйте этот диапазон и вставьте туда же при помощи специальной вставки, указав "значения".
не получается, как видно на скрине, загвоздка в этом маленьком гадком зеленом треугольнике. во второй ячейки столбца D я сделал руками следующее:
1. выбрал формат ячейки "текстовой"
2. поставил курсор в строку формулы (там где на скрине пример ВПР-а) и нажал Интер
Итог: появился зеленый треугольник на ячейки и ВПР тут же сработал.

Все остальные ячейки приведены в формат как Вы сказали...не дало результата

Exo вне форума Ответить с цитированием
Старый 29.04.2009, 11:08   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Файл с примером - в студию!!!
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 29.04.2009, 11:13   #5
Exo
Форумчанин
 
Аватар для Exo
 
Регистрация: 25.09.2007
Сообщений: 102
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Файл с примером - в студию!!!

вот пример
Exo вне форума Ответить с цитированием
Старый 29.04.2009, 11:28   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

В Вашем примере выделите диапазон "A2:C10" и выполните макрос:
Код:
Sub qq()
    With Selection
        a = .Value
        .NumberFormat = "General"
        .Value = a
    End With
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 29.04.2009, 11:45   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

это обсуждалось уже здесь.
1. Отмечаем диапазон
2. Выставляем диапазону требуемый формат
3. Жмем "найти и заменить" (меняем например 0 на 0). Конечно полная гарантия, что исправятся все значения затем заменить 1 на 1, 2 на 2 ... 9 на 9.

второй вариант:
вместо п.3 выполняем макрос
Код:
Sub SB1
  arr = Range("A1:C100")
  Range("A1:C100") = arr
end sub
понятно, вместо ("A1:C100") указываете ваш диапазон ячеек. в обоих случаях добиваемся того, что в каждую ячейку попадает тоже значение, а эксель его "переосмысливает" и приводит к желаемому формату.

кстати в вашем случае артикулы потеряют нули в начале (если их привести к числам)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 29.04.2009, 12:13   #8
Exo
Форумчанин
 
Аватар для Exo
 
Регистрация: 25.09.2007
Сообщений: 102
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
кстати в вашем случае артикулы потеряют нули в начале (если их привести к числам)
это главная проблема почему собственно и бьемся с коллегами, что бы все было в тексте, конечно артикул скажем 0011121 и 11121 могут быть совершенно разными изделиями, к сожалению большая часть сотрудников этого не понимают или не хотят понимать, отсюда огромное количество ошибок.


SAS888, IgorGO - спасибо большое, сейчас попробую на своих файлах Ваши рекомендации.
Exo вне форума Ответить с цитированием
Старый 29.04.2009, 12:33   #9
Exo
Форумчанин
 
Аватар для Exo
 
Регистрация: 25.09.2007
Сообщений: 102
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
В Вашем примере выделите диапазон "A2:C10" и выполните макрос:
Код:
Sub qq()
    With Selection
        a = .Value
        .NumberFormat = "General"
        .Value = a
    End With
End Sub
SAS888, как раз то что делает Ваш макрос делать и не нужно, нужно диапазон (из примера) С2:С10 привести в соответствие с диапазоном B2:B10 (что бы диапазон С2:С10 заимел себе эти проклятые зеленые треугольнички)

IgorGO, SAS888, возможно Вы меня не совсем поняли, столбец С (примера) это формат который я получаю от коллег, столбец В, это формат с которым работаю я, нужно привести в соответствие со столбцом В столбец С. Успехом будет считаться, если сработает ВПР (уже вбит в столбец D примера)

З.Ы. менять формат в столбце В нельзя, нужно менять формат в столбце С
Exo вне форума Ответить с цитированием
Старый 29.04.2009, 13:08   #10
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Ясно. Ну, тогда так:
Код:
Sub qq()
    Dim Cell As Range
    For Each Cell In Selection
        Cell.NumberFormat = "@": Cell.Value = CStr(Cell.Value)
    Next
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
КАК ПЕРЕДЕЛАТЬ ФОРМАТ mp4 В ФОРМАТ 3gp,MPEG4 kamalruslan Софт 4 20.08.2015 16:16
Формат ячеек в пивотах madgrey Microsoft Office Excel 0 17.04.2009 16:18
ВПР наоборот Python Microsoft Office Excel 6 11.04.2009 00:08
Нужен ВПР olimpus Microsoft Office Excel 6 13.11.2008 18:28
Функция ВПР Pilot Microsoft Office Excel 3 21.09.2008 07:26