Вставить значение IF в целевую

Я хочу создать макрос для копирования диапазона (C2: C22), где есть формулы и вставить его в диапазон столбцов (D2: D22) в качестве значений. Моя проблема в том, что каждые 6 ячеек у меня есть формула, и я не хочу, чтобы макрос ее переопределял. Я пытался с этим макросом, но он не копирует формулы, а только значения, и мне нужно вставлять значения, а не в формулы.

Благодаря!

Sub example() Dim source As Range Dim target As Range Set source = ActiveSheet.Range("c2:c22") Set target = ActiveSheet.Range("d2:d22") copy_formulas source:=source, target:=target End Sub Public Sub copy_formulas(source As Range, target As Range) 'Assumes that all formulas start with '=' and all non formulas do not Dim i As Long Dim j As Long Dim c As Range For i = 1 To source.Rows.Count For j = 1 To source.Columns.Count Set c = source(RowIndex:=i, ColumnIndex:=j) If Left(c.Formula, 1) <> "=" Then target(RowIndex:=i, ColumnIndex:=j).Value = c.Value End If Next j Next i End Sub 

Измените внутренность вашего цикла на:

 Set c = target(RowIndex:=i, ColumnIndex:=j) If Left(c.Formula, 1) <> "=" Then c.Value = source(RowIndex:=i, ColumnIndex:=j).Value End If 

Ваш текущий код проверяет, есть ли формула в исходной ячейке, но ваш вопрос предполагает, что вы должны тестировать формулу в целевой ячейке.

Этот цикл может быть более эффективным:

 Dim rSource As Range Dim rTarget As Range Set rSource = Worksheets("Sheet1").Range("C2:C22") Set rTarget = Worksheets("Sheet1").Range("D2:D22") For Item = 1 To rSource.Count If Not rTarget.Cells(Item).HasFormula Then rTarget.Cells(Item).Value = rSource.Cells(Item).Value End If Next Item 
  • Вставить из Excel в приложение C #, сохраняя полную точность
  • Создание новых книг и копирование / вставка. Быстрее возможное решение?
  • Пользовательский элемент CommandButton для заполнения на основе CheckBox True / False
  • Могу ли я заставить VBA изменить собственный код в соответствии с потребностями пользователя?
  • Копирование и вставка Microsoft Excel с форматом даты
  • Excel VBA: вставить ввод пользователя в столбце месяца, который определяется пользователем
  • скопировать лист в другую книгу, но лист также сохраняется в новой книге
  • Как вставить диапазон на другой рабочий лист с фильтрами
  • Как я могу ссылаться на неактивный лист при выполнении значений вставки?
  • VBA для поиска значения, а затем передачи данных с одного листа
  • VBA - интеграция с Excel + Word - циклическое кодирование кода без причины
  • Давайте будем гением компьютера.