Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 След.
При переключении между серверами данные на удолённом ресурсе не сохраняються в Excel
 
Привет, Всем

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

Что можно сделать в таком случае?
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
Друзья, всем спасибо за помощь.

В итоге мы получили инструмент Tool - EXCHANGE который выполняет следующие этапы действий:
Этап 1 Перенос данных по условию
Этап 2 форматирование вставляемых данных в соответствии с форматом таблицы куда вставляем эти данные
Этап 3 подстановка формул
Этап 4 применение условного форматирования

Прилогаю рабочий вариант файлов (1000 строк переносит примерно за 3 минуты) Если есть варианты, прошу помочь с оптимизацией.
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
Друзья отвечаю на свой вопрос. Как считать количество строк по первому столбцу, а условное форматирование делать по 22 столбцу.

Реализация может быть двумя способами:
1)
Код
Dim aa As Long
        aa = ShtS.Cells(ShtS.Rows.Count, 1).End(xlUp).Row
        With ShtS.Range("$V$2", ShtS.Cells(aa, 22)).FormatConditions.Add(xlExpression, , "=ЕСЛИ(И(W2=""дата"";V2<>"""");(V2>=СЕГОДНЯ())*(V2<=(СЕГОДНЯ()+10)))")
        .Interior.Color = vbYellow
        .StopIfTrue =
False
       End With
2)
Код
Dim lLastRow As Long
        lLastRow = ShtS.UsedRange.Row + ShtS.UsedRange.Rows.Count - 1
        With ShtS.Range("$V$2", ShtS.Cells(lLastRow, 22)).FormatConditions.Add(xlExpression, , "=ЕСЛИ(И(W2=""дата"";V2<>"""");V2<СЕГОДНЯ())")
        .Interior.Color = vbRed
        .StopIfTrue = False
        End With
Изменено: Mutarix - 28.02.2020 18:36:46
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
vikttur, здесь не поспоришь.
Но мой последний вопрос завершает эту тему. В конце которой я хотел предоставить материалы конечного результата. Помогите закончить...
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
vikttur, вы предлагаете эту тему оставить не завершённой и создать новую?
Мне нужно, что бы условное форматирование создавалось правильно и для этого нужно сослаться на правильный столбец, что бы определить конец таблицы.
Сейчас условное форматирование устанавливаеться до половины таблицы так как в столбце V2 данных только до середины таблицы.
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
vikttur, по теме.
один из пунктов темы перенос данных с условным форматирование.
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
Друзья, подскажите как в этом коде сделать, что бы проверка последней строки таблицы выполнялась по первому столбцу (A2), а закрашивала V2
Код
With ShtS.Range("$V$2", ShtS.Cells(ShtS.Rows.Count, 22).End(xlUp)).FormatConditions.Add(xlExpression, , "=ЕСЛИ(И(W2=""дата"";V2<>"""");(V2>=СЕГОДНЯ())*(V2<=(СЕГОДНЯ()+10)))")
.Interior.Color = vbYellow
.StopIfTrue = False
End With
Изменено: Mutarix - 28.02.2020 14:44:31
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
Дмитрий(The_Prist) Щербаков,

Отвечаю на свой вопрос Как сделать что бы закрашивала диапазон.
Вот что получилось:
Код
With ShtS.Range("$A$2", ShtS.Cells(ShtS.Rows.Count, 47).End(xlUp)).FormatConditions.Add(xlExpression, , "=ЕСЛИ(($W2<>""дата"")*($W2<>"""");$W2<=СЕГОДНЯ())")
.Interior.Color = vbCyan
.StopIfTrue = False
End With
Изменено: Mutarix - 28.02.2020 12:43:23
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
Дмитрий(The_Prist) Щербаков, Вы правы. Большое спасибо, работае.
Сейчас закрашивает ячейку. Как сделать, чтобы закрашивала строку?
Изменено: Mutarix - 28.02.2020 10:28:13
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
Дмитрий(The_Prist) Щербаков,

Файлы добавил.
Изменено: Mutarix - 27.02.2020 18:28:51
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
Дмитрий(The_Prist) Щербаков,
Предидущая ошибка ушла. Появилась новая.
Цитата
Run-time error '5':
Invalid procedure call or argument
Насколько мне известно, что то с аргументом. Возможно формула написана не верно.
Что с этим можно сделать?
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
Привет, Всем

Код удаляет все правила условного форматирования, затем должен создавать правила, но после запуска макроса выдаёт ошибку:
Удаляет все правила на листе и выдаёт ошибку на 2-й строке кода.

Run-time error '1004':
Method 'Range' of object'_Worksheet' failed

Подскажите пожалуйста как исправить код что бы убрать ошибку и создалось правило условного форматирования
В столбце AC2 и до последней строки (или максимум до 5000 строки)
   
Код
   ShtS.Cells.FormatConditions.Delete
        With ShtS.Range("AC2", Cells(Rows.Count, 4).End(xlUp)).FormatConditions.Add(xlExpression, , "=ЕСЛИ(ИЛИ($T2="";$T2=""Нет данных"";$T2=""На согласовании"");СЕГОДНЯ()-ПСТР(Y2;6;10);$T2-ПСТР(Y2;6;10))<=5")
        .Interior.Color = vbGreen
        .StopIfTrue = False
        End With
Изменено: Mutarix - 27.02.2020 18:33:20
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
Привет, Всем

Нашёл код реализации подобной задачи, только он выполняет сразу форматирование.
Мне нужно что бы код сначало удалял все правила условного форматирования, а затем назначал по формулам указанным в посте выше.
Код
Sub format()  
With Range("D5", Cells(Rows.Count, 4).End(xlUp)).FormatConditions. _  
Add(xlExpression, , "=$E$2>($D5+30)")  
   .Interior.Color = vbRed  
'    .StopIfTrue = False  
End With  
End Sub

Есть идеи как это сделать и встроить в общий код?
Изменено: Mutarix - 26.02.2020 16:24:48
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
МатросНаЗебре, Большое спасибо, работает правильно. 1000 строк перенесло примерно за 3 минуты. Если есть варианты как ускорить, было бы не плохо.

P]Считаю Этап 3 - перенос данных с подстановкой формул - ВЫПОЛНЕННЫМ

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

Правила следующие (Использовать формулу для определения форматирования):

[/P]
Скрытый текст

Изменено: Mutarix - 26.02.2020 16:12:41
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
МатросНаЗебре, спасибо работает отлично. Столкнулся со следующей проблемой:
Есть столбец W в котором есть формула. При переносе работает правильно код вставляет формулу.
Но есть один момент если вместо формулы указано значение нужно оставить значение в этой ячейке.

Тоесть логика должна быть следующей:
Если в стобце W строка n = слово "дата" тогда вставляем формулу
Если в стобце W строка n = значение отличное от слова "дата" - вставляем как значение.
Код
If .Cells (N:W) = "дата"
Then
вставляем формулу
Else
вставляем как значение
End If
Изменено: Mutarix - 25.02.2020 15:22:41
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
МатросНаЗебре, подскажите пожалуйста как исправить ваш код, что бы не зависимо в какую строку вставляеться формула ссылка была на эту строку.
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
МатросНаЗебре, код работает. Только формулы ссылаються на эталонную строку, тоесть формула строки 18 должна ссылаться на строку 18, сейчас ссылеться на строку 2
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
МатросНаЗебре, без изменений.

Считаю Этап 2 по присвоению формата - ВЫПОЛНЕН
Можем приступать к Этапу 3 подстановка формул
При переносе данных нужно что бы в ячейки где предусмотрены формулы добавлялись формулы во вставленных строках.

Пример файла во вложении.
Изменено: Mutarix - 22.02.2020 21:51:10
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
Цитата
МатросНаЗебре написал:
Чего остаётся?
Скачёк экрана. но это не критично.
Смена осей графика точечной диаграммы
 
nchvi, как вариант во вложенном файле.
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
МатросНаЗебре, Спасибо. сейчас работает правильно, но всётаки остаёться один скачёк экрана после завершения макроса. Это не критично, но если есть вариант как это убрать напишите.

Дмитрий(The_Prist) Щербаков, Спасибо за уточнение. Ваш вариант также работает но мне нужно форматировать только данные которые вставляем. Если есть вариант как это сделать рад буду рассмотреть.


Друзья, С точки зрения оптимизации какой вариант будет быстрее и стабильнее работать?
Изменено: Mutarix - 21.02.2020 11:58:44
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
МатросНаЗебре, Проверил ваш вариант.
Переносит данные немного не корректно. Почемуто вставляет строку с заголовком. (Файлы приложил)
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
Дмитрий(The_Prist) Щербаков, доказательства во вложении.

Сейчас проверю предложенный вариантМатросНаЗебре,
Изменено: Mutarix - 21.02.2020 11:28:52
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
Дмитрий(The_Prist) Щербаков, проверил ваш вариант. не помогло.

МатросНаЗебре, подскажите как правильно реализовать ваш вариант

Цитата
МатросНаЗебре написал:
Кстати, если задумались об оптимизации, то можно один раз вставить формат во вставляемые строки, и потом заполнить значения. Так, вроде, будет быстрее.И ещё как вариант, можно запомнить вставляемые строки в массив, и вставить один раз полученный массив.
Изменено: Mutarix - 20.02.2020 11:50:44
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
Дмитрий(The_Prist) Щербаков,

Вот рабочий код. Оптимизации сделаны но проблема остаёться.
Код
Sub perenosSZ()

Dim ShtS As Worksheet
Dim ShtZ As Worksheet
Dim last_row As Integer
Dim last_row_other As Integer
Dim strg As String
Dim first_row As Integer
Dim rng As Range
Dim retZ As Integer
Dim retS As Integer

On Error Resume Next
Set ShtZ = Workbooks("База - ЗАКУПКИ.xlsx").Worksheets("БазаЗакупки")
Set ShtS = Workbooks("База - СНАБЖЕНИЕ.xlsx").Worksheets("БазаСнабжение")
'проверяем открыт ли файл для загрузки данных с всплывающим сообщением о необходимости выполнит действие
    If ShtZ Is Nothing Then
        retZ = MsgBox("ВНИМАНИЕ! Откройте файл База - ЗАКУПКИ.xlsx", vbExclamation + vbOKCancel, "Внимание!!!")
    Exit Sub
    End If
    If ShtS Is Nothing Then
        retS = MsgBox("ВНИМАНИЕ! Откройте файл База - СНАБЖЕНИЕ.xlsx", vbExclamation + vbOKCancel, "Внимание!!!")
    Exit Sub
    End If
On Error GoTo 0
'----------------------
    If ShtZ.AutoFilterMode = True Then ShtZ.Cells.AutoFilter ' отключает все фильтры если они включены
    If ShtS.AutoFilterMode = True Then ShtS.Cells.AutoFilter ' отключает все фильтры если они включены
    ShtZ.Outline.ShowLevels RowLevels:=0, ColumnLevels:=2 'отключает групировку второго уровня "разгруппировать"
    ShtS.Outline.ShowLevels RowLevels:=0, ColumnLevels:=2 'отключает групировку второго уровня "разгруппировать"
    Application.ScreenUpdating = False 'отключаем обновление экрана
    Application.Calculation = xlCalculationManual 'отключаем автоматический пересчёт формул после каждого действия с листом
    Application.EnableEvents = False 'отключаем отслеживание событий
    If Application.ReferenceStyle = xlR1C1 Then Application.ReferenceStyle = xlA1 'переключает отображения стиля ссылок "R1C1" --> "A1"
    
last_row = ShtS.Cells(Rows.Count, 1).End(xlUp).Row
last_row_other = ShtZ.Cells(Rows.Count, 1).End(xlUp).Row + 1
strg = "Заключение договора"
For first_row = last_row To 1 Step -1
    If InStr(1, strg, ShtS.Cells(first_row, 32).Value) > 0 Then 'Условие отбора строк по "статусу заявки""
            
            ShtZ.Range("A2:AU2").Copy
            ShtZ.Range("A" & last_row_other & ":AU" & last_row_other).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
            
            'ShtZ.Range("A2:AU2").Copy ShtZ.Range("A" & last_row_other & ":AU" & last_row_other) 'копируем формат 2-й строки базы закупок и применяем к новым строкам
            ShtZ.Range("A" & last_row_other & ":AU" & last_row_other).Value = ShtS.Range("A" & first_row & ":AU" & first_row).Value 'вставляет строку соответствующую критериям
        If ShtZ.Range("Y" & last_row_other).Value = "" Then ShtZ.Range("Y" & last_row_other).Value = "С->З " & Date Else ShtZ.Range("Y" & last_row_other).Value = ShtZ.Range("Y" & last_row_other).Value & ", С->З " & Date ' вставляет текущую дату в ячейку Y в строке соответствующую критериям
            
            If Not rng Is Nothing Then 'проверяем создан ли диапазон для накопления строк
                Set rng = Union(rng, ShtS.Rows(first_row)) 'накапливаем в диапазоне строки для удаления
            Else
                Set rng = ShtS.Rows(first_row) 'создаём диапазон для накопления строк для удаления
            End If
            
            last_row_other = last_row_other + 1
    End If
Next

If Not rng Is Nothing Then rng.Delete Shift:=xlUp 'удаляем строки в накопленном диапазоне

    If ShtZ.AutoFilterMode = False Then ShtZ.Cells.AutoFilter ' включает все фильтра если они отключены
    If ShtS.AutoFilterMode = False Then ShtS.Cells.AutoFilter ' включает все фильтра если они отключены
    ShtZ.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1 'включает групировку первого уровня "группировать"
    ShtS.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1 'включает групировку первого уровня "группировать"
    Application.ScreenUpdating = True 'включаем обновление экрана
    Application.Calculation = xlCalculationAutomatic 'включаем автоматический пересчёт формул после каждого действия с листом
    Application.EnableEvents = True 'включаем отслеживание событий
    
    MsgBox "ВЫПОЛНЕНО!", vbInformation
    
End Sub
Ещё не пробовал ваш вариант. Напишу дополнительно что вышло.
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
МатросНаЗебре, попробовал ваш вариант.
Excel начал моргать, все действия переноса данных визуализировались.
Как его заставить выполнить эти действия в фоновом режиме.

Или

как реализовать ваше предложение

"можно один раз вставить формат во вставляемые строки, и потом заполнить значения."
Изменено: Mutarix - 19.02.2020 17:59:10
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
Дмитрий(The_Prist) Щербаков, есть один нюанс.

В формулах есть ссылки на внешний источник.
При копировании строки, Excel каждый раз (для каждой копируемой строки) просит открыть этот файл (файл источника).
Переносил 20 строк при этом 20 раз нажимал отмена.

Всётаки есть разница.  
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
МатросНаЗебре, Дмитрий(The_Prist) Щербаков,

Предложенный вариант работает.

На сколько корректно копировать полностью строку A2:AU2 вместе со значениями, а затем вставлять новые значения.
Может правельней будет копировать только формат из диапазона A2:AU2?
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
МатросНаЗебре,

Учитывая то что файл всегда будет иметь наполнение данными, за эталон берём формат строки A2:AU2
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
МатросНаЗебре, не получаеться реализовать в моём коде.
Страницы: 1 2 3 4 5 След.
Наверх