Копирование и вставка значений на основе заголовка столбца

#excel #vba

#excel #vba

Вопрос:

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

  With ActiveWorkbook
    With Worksheets(1)
    For i = 20 To 1 Step -1
            If cells(1, i) = "High Level Status" Then
            .cells(1, i).EntireColumn.Copy
            .cells(1, i).EntireColumn.PasteSpecial Paste:=xlPasteValues
            End If
    Next i
            End With
    End With
  

когда я запускаю код, он запускается без сообщений об ошибках, но не выполняется, как указано. Есть идеи, почему?

Комментарии:

1. На самом деле вы не ссылаетесь на With ActiveWorkbook и With Worksheets(1) .

2. Ожидали ли вы, что этот код будет зацикливаться?

3. Я думаю, вам нужно добавить префикс with . При использовании с / End . Он должен читать .worksheets (1) и .cells (1, I)

4. проверенное решение. спасибо @ChrisKiniry

Ответ №1:

Назначение значений

Быстрое исправление

 Option Explicit

Sub assignValuesQF()
    Dim j As Long
    With ActiveWorkbook.Worksheets(1)
        For j = 20 To 1 Step -1
            If .Cells(1, j) = "High Level Status" Then
                With .Columns(j)
                    .Value = .Value
                End With
            End If
        Next j
    End With
End Sub
  

Более эффективно

 Sub assignValues()
    With ActiveWorkbook.Worksheets(1)
        Dim j As Long
        For j = 20 To 1 Step -1
            If .Cells(1, j).Value = "High Level Status" Then
                Dim LastRow As Long
                LastRow = .Cells(.Rows.Count, j).End(xlUp).Row
                ' No need to paste values for header (Resize, Offset).
                With .Cells(1, j).Resize(LastRow - 1).Offset(1)
                    .Value = .Value
                End With
                Exit For ' you have found it, no need to loop anymore.
            End If
        Next j
    End With
End Sub