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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2017, 11:54   #1
PetyaVova
Пользователь
 
Регистрация: 18.07.2017
Сообщений: 20
По умолчанию Оставить существующее значение в ячейке с фомулой

Существует итоговый файл в который ежемесячно копируется на новый лист
итоговая информация по контрагентам. На первом листе книги ведётся динамика изменений.
контрагенты прибавляются и отваливаются, соответственно
при копировании нового листа в итоговый файл они добавляются, но в динамике не участвуют.
в копируемом листе ячейка с ИНН контрагента выделена цветом.
С добавлением новых контрагентов общими усилиями разобрались.
И как присвоить ноль ячейке с отсутствующими данными.
Остался один вопрос, как оставить предыдущее значение (название фирмы) в ячейке если в
скопированном листе этой фирмы уже нет.
в ячейках со значениями, отсутствующим данным присваивается значение "0" и оно не мешает
проведению вычислений.
Код:
=ЕслиОшибка(.......;0)
но в одной ячейке надо оставить существующее значение "Название фирмы".
скорее всего проверить макросом отсутствие ИНН в новом файле и при копировании
заменить формулу отвечающую за подтягивание названия на статическое название.
"Лично я так думаю", но могут быть и другие мнения.
Файлик тот же.
Вложения
Тип файла: rar Пример.rar (27.1 Кб, 18 просмотров)
PetyaVova вне форума Ответить с цитированием
Старый 28.08.2017, 12:37   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от PetyaVova Посмотреть сообщение
скорее всего проверить макросом отсутствие ИНН в новом файле и при копировании
заменить формулу отвечающую за подтягивание названия на статическое название.
скорее всего в начале кода прописать что-то типа
Код:
With sh1
        rCOunt = .Cells(.Rows.Count, 1).End(xlUp).Row
        Set myCell = .Range("A3:B" & rCOunt - 2)
        myCell.Value = myCell.Value
    End With
а формулу для поля "Фирма" генерировать в конце, после переноса новых значений ИНН. хинт:
Код:
Range("Addr_Here").FormulaR1C1 = "=Formula_Body"
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 30.08.2017, 16:34   #3
PetyaVova
Пользователь
 
Регистрация: 18.07.2017
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
а формулу для поля "Фирма" генерировать в конце, после переноса новых значений ИНН
Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
скорее всего в начале кода прописать что-то типа
Код:
With sh1
        rCOunt = .Cells(.Rows.Count, 1).End(xlUp).Row
        Set myCell = .Range("A3:B" & rCOunt - 2)
        myCell.Value = myCell.Value
    End With
а формулу для поля "Фирма" генерировать в конце, после переноса новых значений ИНН. хинт:
Код:
Range("Addr_Here").FormulaR1C1 = "=Formula_Body"
Как генерировать если в новом листе его уже нет?
PetyaVova вне форума Ответить с цитированием
Старый 30.08.2017, 21:42   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Чем не решение?
Код:
Sub AddNewINN()
    Dim sh As Worksheet
    Dim sh1 As Worksheet
    Dim rCOunt As Long
    Dim i
    Dim myColor
    Dim myCell
    Dim newCell
    Dim lastrow As Long

    Set sh = Sheets(2)
    Set sh1 = Sheets(1)
    With sh
        rCOunt = .Cells(.Rows.Count, 1).End(xlUp).Row
        myColor = sh.Range("D9").Interior.Color
        For i = 26 To rCOunt
            If .Cells(i, "D").Interior.Color = myColor Then
                Set myCell = sh1.Range("B:B").Find(.Cells(i, "D"))
                If myCell Is Nothing Then Set newCell = (.Cells(i, "D"))

                If newCell = (.Cells(i, "D")) Then
                    lastrow = sh1.Range("A65536").End(xlUp).Row - 1
                    sh1.Rows(lastrow - 1).Copy
                    sh1.Rows(lastrow).Insert xlDown, xlFormatFromLeftOrAbove
                    sh1.Range("B" & lastrow).Value = newCell.Value
                    sh1.Range("A" & lastrow).Value = newCell.Offset(-1, 0).Value
                    Application.CutCopyMode = 0
                End If
            End If
        Next i
    End With
    Set sh = Nothing
    Set sh1 = Nothing

End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 01.09.2017, 14:04   #5
PetyaVova
Пользователь
 
Регистрация: 18.07.2017
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
скорее всего в начале кода прописать что-то типа
Код:
With sh1
        rCOunt = .Cells(.Rows.Count, 1).End(xlUp).Row
        Set myCell = .Range("A3:B" & rCOunt - 2)
        myCell.Value = myCell.Value
    End With
а формулу для поля "Фирма" генерировать в конце, после переноса новых значений ИНН. хинт:
Код:
Range("Addr_Here").FormulaR1C1 = "=Formula_Body"
объясните пожалуйста это выражение, не могу понять что оно делает.
в скрипте ругается.
И во втором варианте что то не то, подтягивает вместо Фирмы значение из столбца "D"
PetyaVova вне форума Ответить с цитированием
Старый 01.09.2017, 15:43   #6
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

PetyaVova, можно не цитировать все подряд? Или считаете что Aleksandr H. не знает, что он написал ранее? Загадили всю тему бессмысленными цитатами.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 01.09.2017, 15:48   #7
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от PetyaVova Посмотреть сообщение
И во втором варианте что то не то, подтягивает вместо Фирмы значение из столбца "D"
Код:
sh1.Range("A" & lastrow).Value = newCell.Offset(0, -3).Value
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 01.09.2017, 16:03   #8
PetyaVova
Пользователь
 
Регистрация: 18.07.2017
Сообщений: 20
По умолчанию

Извините, исправлюсь.
PetyaVova вне форума Ответить с цитированием
Старый 04.09.2017, 21:02   #9
PetyaVova
Пользователь
 
Регистрация: 18.07.2017
Сообщений: 20
По умолчанию

Спасибо, но это выражение делает статичными новые добавленные названия фирм, а они должны остаться вычисляемыми, а статичной должна остаться фирма которой нет в новом листе.
PetyaVova вне форума Ответить с цитированием
Старый 04.09.2017, 21:03   #10
PetyaVova
Пользователь
 
Регистрация: 18.07.2017
Сообщений: 20
По умолчанию

Я думаю сделать так.
Код:
    With sh1
    Dim oldCod
    Dim OldCell
        rCOunt = .Cells(.Rows.Count, 1).End(xlUp).Row
        For i = 3 To rCOunt
            'If .Cells(i, "A") Is Nothing Then
             OldCell = Cells(i, "A").Text
             If OldCell = "#Н/Д" Then
              Set oldCod = sh1.Range("B" & i)
              ' sh1.Range("A" & i).Text = sh3.Range("A:A").Find(sh1.Range("B" & i))
              Set OldCell = sh3.Range("A:A").Find(.Cells(i, "B"))
              End If
        Next i
    End With
только не получается вставить.
не подставляется значение из столбца А
подскажите ошибку?
Вложения
Тип файла: rar Пример.rar (33.6 Кб, 14 просмотров)

Последний раз редактировалось PetyaVova; 05.09.2017 в 09:50. Причина: добавил файл
PetyaVova вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в ячейке 1 выбрали значение, в ячейке 2 должен выводиться список для выбора Nik_123 Microsoft Office Excel 3 03.08.2015 12:58
Как удалить формулу и при этом оставить её значение gogy_5 Microsoft Office Excel 2 08.07.2014 16:13
Перебор строк, оставить с наибольшим значением в ячейке strannick Microsoft Office Excel 5 02.02.2013 23:08
Если значение в ячейке С5 -Х, то в G10 - Y Interesniy Microsoft Office Excel 3 23.05.2011 14:41
Значение в ячейке Amelie_L Microsoft Office Excel 2 10.02.2010 13:47