Попытка создать динамическое копирование и заменить функцию, используя специальные ячейки - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь создать код, который будет искать заданный заголовок столбца и копировать содержимое столбца после первой замены всех пробелов на ноль.

Я попытался использовать следующий код, но второй параметр для функции диапазона внизу не работает, когда я пытаюсь использовать «lastrow».

lastrow определяется числовым значением последней строки, но я не могу понять, как объединить это с алфавитной ссылкой, указанной в dbt.address

`Sub replacezeros()

Dim dbt As Range
Dim lastrow As Range


'This is to define last row of array
Set lastrow = Range("A" & Rows.Count).End(xlUp)
Debug.Print lastrow.Row


'This is for Debit
Set dbt = Range("A1:J1").Find("Debit")
Debug.Print dbt.Address
Debug.Print dbt.Cells


'Range(dbt.Address,).SpecialCells(xlCellTypeBlanks) = 0


End Sub`

В надежде получитьэто заменить все нули только в том столбце, который ищется, чтобы выбрать "Дебет"

Ответы [ 2 ]

1 голос
/ 13 июня 2019

Не уверен, что я понял вашу проблему - попробуйте это:

Sub replacezeros()

Dim dbt As Range
Dim lastrow As Range

'This is to define last row of array
Set lastrow = Range("A" & Rows.Count).End(xlUp)
Debug.Print lastrow.Row

'This is for Debit
Set dbt = Range("A1:J1").Find("Debit")

If Not dbt Is Nothing Then  'avoid error if Debit not found
    On Error Resume Next    'avoid error if no blanks
    Range(dbt.Offset(1), Cells(lastrow.Row, dbt.Column)).SpecialCells(xlCellTypeBlanks).Value = 0
    On Error GoTo 0
End If

End Sub
0 голосов
/ 13 июня 2019

Нечто подобное должно работать ... (хотя и не проверено)

Sub replacezeros()
     Dim dbt As Range, rData As Range, Cell As Range
     Dim lastrow As Long: lastrow = Range("A" & Rows.Count).End(xlUp).Row

     'This is for Debit
     Set dbt = Range("A1:J1").Find("Debit")
     If Not dbt Is Nothing Then
          Set rData = Range(Cells(1,dbt.Column),Cells(lastrow, dbt.Column))
          For Each Cell In rData.SpecialCells(xlCellTypeBlanks)
               Cell.Value = 0
          Next Cell
     End If
End Sub
...