Страницы: 1
RSS
Отличие информации в ячейке и в строке формул
 
Коллеги, просьба уточнить, может быть кто сталкивался. Проблема следующая: Есть выгрузка из 1С. Начал работать с выгрузкой, возникли явные несоответствия при использовании ВПР. Стал разбираться, оказалось следующее: ВПР не видит часть строки. Т.е. в ячейке артикул отображается полностью, а есть нажать на ячейку ЛКМ и посмотреть артикул в строке формул, видно, что артикул обрезан. Видимо поэтому ВПР и не видит его. Т.е. в ячейке виден полный артикул, а Excel воспринимает его как обрезанный. Приложил принтскрин. Сталкивался ли кто-нибудь с такой проблемой? В таблице 3500 SKU вручную выверить все ячейки невозможно...
 
MikeTenoch, есть возможность приложить файл?
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
форматы ячеек умеют показывать немного или даже совсем не то, что находится в ячейке
строка формул более надежный источник, но и там вы обычно видите 1 строку данных, а их может быть несколько (несколько десятков и сотен строк)
выкладывайте файл и рассказывайте что в нем вас смущает, тогда можно будет отбросить гадания и поговорить предметно по сути проблемы
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
MikeTenoch написал:
Сталкивался ли кто-нибудь с такой проблемой?
MikeTenoch, визуализировал то, о чем говорит Ігор Гончаренко,
Кто ясно мыслит, тот ясно излагает.
 
Спасибо. Прикладываю файл. В ячейках B1136, B1146, B1154, B1159, B1167, B1541, B1542 в стороке формул обрезанный артикул, а при просмотре в ячейке - полный. Видимо из-за этого ВПР и не видит ключ и не отображает данные корректно. Выделил проблемные ячейки желтым цветом. Это только те, которые обнаружил в процессе работы, скорее всего такая же проблема есть и в других. Хотя большинство отображаются корректно.  
 
Это из-за формата ячейки
Например к B1136 применён формат 0"/SME"

Попробуйте стоя в проблемной ячейке нажать Главная - Очистить - Очистить форматы
Изменено: Бахтиёр - 23.06.2023 14:56:51
 
Цитата
MikeTenoch написал:
в стороке формул обрезанный артикул, а при просмотре в ячейке - полный.
MikeTenoch, как мы Вам и говорили, у Вас настроены форматы ячеек.
Изменено: Maximich - 23.06.2023 14:55:32
Кто ясно мыслит, тот ясно излагает.
 
У вас там полна ж... огурцов (таких форматов)
 
Попробуйте в ячейки с A1 по A10 написать разные числа и примените к ним разные форматы:
"скоро будет "0" яблок"
;;;
"848"
 
Коллеги, спасибо. Да, видимо проблема в форматах. В чем же причина? Кривая выгрузка из 1С? и что делать? Если по совету Бахтиёр, то уходит весь формат и остается только содержание ячеек. Но это не поможет, т.к. артикул нужен полный, т.к. он является ключом к другой таблице.
Может, есть способ оставить весь текст в ячейке?
Спасибо.
 
Цитата
:  Но это не поможет, т.к. артикул нужен полный, т.к. он является ключом к другой таблице.
Как это, можно поподробнее?
 
Код
Sub Лечилка()
    For Each cl In Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp))
        If cl.Text <> cl.Value Then
            cl.Value = cl.Text
        End If
    Next
End Sub


PS у вас 153 шт. кривых ячеек
Изменено: RAN - 23.06.2023 15:14:38
 
Допустим, для ячейки B1541. В ней указано: 3401400SURU017. Если убрать формат, то истинное значение ячейки - 3401400. Но дело в том, что в других таблицах (продажи, остатки по месяцам) фигурирует именно 3401400SURU017. А если подтягивать инфо через ВПР, то функция видит только 3401400 и из-за этого не тянет информацию...
 
Цитата
написал:
Может, есть способ оставить весь текст в ячейке?
Если вы хотите, чтобы значения в ячейках были на самом деле такие, как они сейчас ВЫГЛЯДЯТ:
В выделенном диапазоне запустите макрос:
Код
Sub ddd()
For Each x in Selection
    x.Value = x.Text
Next
End Sub

Но разберитесь сначала ЭТО ЛИ вам нужно?
Если Формулы настроены на эти артикули то они И СЕЙЧАС работают с тем, что видно на СТРОКЕ ФОРМУЛ (то есть что находится в ячейке  НА САМОМ ДЕЛЕ) а не с тем, что видно в ячейке вследствии применения формата.
 
Бахтиёр, бывает такое у 1С. Вместо значения вваливает формат. Плавали, знаем.
 
Цитата
написал:
Если вы хотите, чтобы значения в ячейках были на самом деле такие, как они сейчас ВЫГЛЯДЯТ:В выделенном диапазоне запустите макрос:Код ? 12345Sub ddd()For Each x in Selection    x.Value = x.TextNextEnd SubНо разберитесь сначала ЭТО ЛИ вам нужно?Если Формулы настроены на эти артикули то они И СЕЙЧАС работают с тем, что видно на СТРОКЕ ФОРМУЛ (то есть что находится в ячейке  НА САМОМ ДЕЛЕ) а не с тем, что видно в ячейке вследствии применения формата.
спасибо! это то, что нужно. Да, к сожалению, в других файлах записано полное наименование артикула, поэтому обращаться нужно именно к нему
 
В этой ситуации наверно правильней будет пользоваться макросом от Андрея:
Код
Sub Лечилка()    
    For Each cl In Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp))
        If cl.Text <> cl.Value Then
            cl.Value = cl.Text
            cl.NumberFormat = "General"
        End If
    Next
End Sub

я только добавил:
Код
cl.NumberFormat = "General"
чтобы подчистить ненужные форматы из исправленных ячеек
 
Спасибо.
 
Дабы не наступать на грабли, тропинка вокруг которых уже протоптана: Видимое значение ячейки в реальное
Там в самом начале так же приведен прием с Text. Но проблема в том, что свойство Text имеет обыкновение выдавать знак решетки, если будет недостаточно места в ячейке(ширина столбца меньше, чем может поместиться символов в ячейках). И на каких-то форматах это сыграет злую шутку. Поэтому в некоторых случаях имеет смысл использовать именно Application.Text()
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх