Страницы: 1
RSS
Исчезают данные
 
Доброго времени суток.
Не подскажите пжлст, с чем связан что данные исчезают ?
В общем такая картина.
Каждый день загружаются данные в excel.
Исходник загрузка данных ЗДЕСЬ
Т.к. данные загружаются в виде текст, применяю локальную формулу в столбце дата и кол-во
Код
Лист1.Range("B2:B1048576").FormulaLocal = Range("B2:B1048576").FormulaLocal
Лист1.Range("N2:O1048576").FormulaLocal = Range("N2:O1048576").FormulaLocal
После некоторых повторных загрузок при применении локальной формулы исчезают даты в строке дата и кол-во.
Не подскажите пжлст в чем может быть причина ?  
 
скорее всего потому, что вы присваиваете одному листу значения из другого листа.
В ваших формулах написано - присвой листу с кодовым названием "Лист1" значения активного листа. А это не всегда один и тот же лист. Это я имею ввиду, что у вас почему-то где-то указан Лист1, и где-то не указан. А это значит код при разных условиях будет выдавать разный результат
P.S. Вы бы хоть небольшой файл-пример приложили, а то гадать мы можем долго
Изменено: New - 11.11.2022 20:54:48
 
New, Вложил файл.
 
Попробуйте так. См. файл
P.S. Вам не кажется странным, что у вас таблица 135 строк на 34 столбца весит почти 3мб ?
Изменено: New - 12.11.2022 16:06:03
 
New, Спасибо за исправление.
А почему так ?
Почему файл большой ? Из за чего ?  
 
Потому что Range("B2:B1048576").FormulaLocal - вы вносите изменения во все строки на листе и Excel запоминает, что вы что-то делали на миллионной строке и записывает это - и файл сразу разрастается огромными масштабами. Не нужно никогда что-то делать сразу со всем столбцом (с миллионами строк). У вас есть область таблицы - вот с ней и работайте. Тогда размер файла не будет расти.
Изменено: New - 12.11.2022 16:29:59
 
New, ааа понятно.
еще вопрос и не судите строго пжлст.
Код
Dim LO As String
Set LO = ActiveSheet.ListObjects(1)
    
    With LO
        .ListColumns(["Äàòà"]).DataBodyRange.Formula2Local = .ListColumns(["Äàòà"]).DataBodyRange.Formula2Local
        .ListColumns(["Êîëè÷åñòâî_ïðîäàæ"]).DataBodyRange.Formula2Local = .ListColumns(["Êîëè÷åñòâî_ïðîäàæ"]).DataBodyRange.Formula2Local
        .ListColumns(["Ñóììà_ïðîäàæè"]).DataBodyRange.Formula2Local = .ListColumns(["Ñóììà_ïðîäàæè"]).DataBodyRange.Formula2Local
        .ListColumns(["Êîëè÷åñòâî_âîçâðàò"]).DataBodyRange.Formula2Local = .ListColumns(["Êîëè÷åñòâî_âîçâðàò"]).DataBodyRange.Formula2Local
        .ListColumns(["Ñóììà_âîçâðàòà"]).DataBodyRange.Formula2Local = .ListColumns(["Ñóììà_âîçâðàòà"]).DataBodyRange.Formula2Local
        .ListColumns(["Êîëè÷åñòâî"]).DataBodyRange.Formula2Local = .ListColumns(["Êîëè÷åñòâî"]).DataBodyRange.Formula2Local
        .ListColumns(["Øòóê"]).DataBodyRange.Formula2Local = .ListColumns(["Øòóê"]).DataBodyRange.Formula2Local
        .ListColumns(["Êîðîáêà"]).DataBodyRange.Formula2Local = .ListColumns(["Êîðîáêà"]).DataBodyRange.Formula2Local
        .ListColumns(["Òîíí"]).DataBodyRange.Formula2Local = .ListColumns(["Òîíí"]).DataBodyRange.Formula2Local
        .ListColumns(["Ëèòð"]).DataBodyRange.Formula2Local = .ListColumns(["Ëèòð"]).DataBodyRange.Formula2Local
        .ListColumns(["Áëîê"]).DataBodyRange.Formula2Local = .ListColumns(["Áëîê"]).DataBodyRange.Formula2Local
        .ListColumns(["Þíèêåéñ"]).DataBodyRange.Formula2Local = .ListColumns(["Þíèêåéñ"]).DataBodyRange.Formula2Local
        .ListColumns(["Öåíà"]).DataBodyRange.Formula2Local = .ListColumns(["Öåíà"]).DataBodyRange.Formula2Local
        .ListColumns(["Ñóììà"]).DataBodyRange.Formula2Local = .ListColumns(["Ñóììà"]).DataBodyRange.Formula2Local
        .ListColumns(["Ïðîäàæè"]).DataBodyRange.Formula2Local = .ListColumns(["Ïðîäàæè"]).DataBodyRange.Formula2Local
    End With
Ругается на
Код
Dim LO As String
я не правильно открыл переменную ?  
 
Код
Dim LO As ListObject

ListObject - это объект Умной таблицы. А у вас как раз умная таблица на листе.
P.S. Копировать текст макроса нужно с русской раскладкой клавиатуры, т.е. сперва меняете расскадку на RUS и только потом выделяете код макроса и  нажимаете Ctrl + C
Изменено: New - 12.11.2022 16:43:45
 
New, ошибку выдает
Код
.ListColumns(["Дата"]).DataBodyRange.Formula2Local = .ListColumns(["Дата"]).DataBodyRange.Formula2Local

Код
Dim LO As ListObject
Set LO = ActiveSheet.ListObjects(1)
    
    With LO
        .ListColumns(["Дата"]).DataBodyRange.Formula2Local = .ListColumns(["Дата"]).DataBodyRange.Formula2Local
        .ListColumns(["Количество_продаж"]).DataBodyRange.Formula2Local = .ListColumns(["Количество_продаж"]).DataBodyRange.Formula2Local
        .ListColumns(["Сумма_продажи"]).DataBodyRange.Formula2Local = .ListColumns(["Сумма_продажи"]).DataBodyRange.Formula2Local
        .ListColumns(["Количество_возврат"]).DataBodyRange.Formula2Local = .ListColumns(["Количество_возврат"]).DataBodyRange.Formula2Local
        .ListColumns(["Сумма_возврата"]).DataBodyRange.Formula2Local = .ListColumns(["Сумма_возврата"]).DataBodyRange.Formula2Local
        .ListColumns(["Количество"]).DataBodyRange.Formula2Local = .ListColumns(["Количество"]).DataBodyRange.Formula2Local
        .ListColumns(["Штук"]).DataBodyRange.Formula2Local = .ListColumns(["Штук"]).DataBodyRange.Formula2Local
        .ListColumns(["Коробка"]).DataBodyRange.Formula2Local = .ListColumns(["Коробка"]).DataBodyRange.Formula2Local
        .ListColumns(["Тонн"]).DataBodyRange.Formula2Local = .ListColumns(["Тонн"]).DataBodyRange.Formula2Local
        .ListColumns(["Литр"]).DataBodyRange.Formula2Local = .ListColumns(["Литр"]).DataBodyRange.Formula2Local
        .ListColumns(["Блок"]).DataBodyRange.Formula2Local = .ListColumns(["Блок"]).DataBodyRange.Formula2Local
        .ListColumns(["Юникейс"]).DataBodyRange.Formula2Local = .ListColumns(["Юникейс"]).DataBodyRange.Formula2Local
        .ListColumns(["Цена"]).DataBodyRange.Formula2Local = .ListColumns(["Цена"]).DataBodyRange.Formula2Local
        .ListColumns(["Сумма"]).DataBodyRange.Formula2Local = .ListColumns(["Сумма"]).DataBodyRange.Formula2Local
        .ListColumns(["Продажи"]).DataBodyRange.Formula2Local = .ListColumns(["Продажи"]).DataBodyRange.Formula2Local
    End With
Изменено: powerwer - 12.11.2022 16:51:10
 
У вас какая версия Excel? Попробуйте этот файл
Изменено: New - 12.11.2022 16:56:58
 
New, Та же самая ошибка.
Excel - 2019

проверил, в других версиях та же ошибка

Error "subscript out of range"
индекс вне диапазона
Изменено: powerwer - 12.11.2022 18:29:57
 
Цитата
powerwer написал:
Formula2Local
Вы откуда такое вы..ли?
 
RAN, Есть другие варианты ?  
Изменено: powerwer - 12.11.2022 18:42:16
 
Если есть другой вариант дайте код пжлст.
Изменено: powerwer - 12.11.2022 18:46:46
 
powerwer,  свои сообщения можно редактировать. Зачем с интервалом в  2 минуты новое?
 
New, RAN, Юрий М,
Не хотелось бы чтобы тема закрылась, как будет время дайте инфо пжлст как выйти из положения.
Заранее спасибо.  
 
powerwer, если у вас выделяется строка
Код
 Set LO = ActiveSheet.ListObjects(1)

это значит у вас на активном листе нет умных таблицы. А в вашем файле есть всего 1 лист с умной таблице.
Может вы тестируете код на другом файле, а не на том, который показываете нам и запускаете макрос из другого листа?
Попробуйте записать эту строку вот так
Код
Set LO = Worksheets("DATA-2021").ListObjects(1)

P.S. Странно, что я выложил новый файл в сообщении #10 другой файл, а вы присылаете фото ошибки и это код из файла из сообщения #4, а не из #10
Изменено: New - 12.11.2022 20:12:20
 
New, Я отправил вам одновременно ошибки и из других файлах.
Пробовал даже ваш файл с разными версиями.
C этим не получилось.
Код
Set LO = Worksheets("DATA-2021").ListObjects(1)
 
вы опять присылаете мне фото из другого файла, не из сообщения #10
Если вам лень скачать файл из сообщения #10, то удалите цифру 2 в FormulaLocal
Изменено: New - 12.11.2022 20:56:06
 
New,
Можем созвониться по скайпу если вам удобно ?  
 
А у вас случаем AnyDesk нет ? ) Чтобы я сразу своими руками поправил ваш код
Изменено: New - 12.11.2022 21:03:41
 
New,
Спасибо большое.
Получилось, удалил "2" из Formula2Local - resul - FormulaLocal
Спасибо большое всем участникам.
Изменено: powerwer - 12.11.2022 21:00:42
 
так в файле из сообщения #10 - я уже удалил цифру 2. Это было сегодня в 16:52. А сейчас уже 21:03 по МСК
 
New, Честно, я скачал и #4 и #10
В обеих файлах у меня была 2 в FormulaLocal
Лучше не буду с вами спорить.
Моя тупость заставил вас беспокоить.
Приношу свои извинения.
 
Вот картинка из файла из сообщения №10
Страницы: 1
Наверх