Нужно удалить именованный range2, когда все значения в именованном range1 равны «N / A» VBA Application.WorksheetFunction - PullRequest
0 голосов
/ 09 января 2019

Мы собираемся удалить весь раздел строк (именованный диапазон «Remove_Allowances_Credits»), когда все значения в разделе (именованный диапазон «Allowances_Credits_Range») равны «N / A».
Например, мы стремимся удалить строки 156: 171, когда каждое значение в C161: C170 равно «N / A». Как я могу использовать application.worksheetFunction count и countif для этого?

If Application.WorksheetFunction.Count(Range("Allowances_Credits_Range")) = Application.WorksheetFunction.Count(Range("Allowances_Credits_Range", "n/a")) Then

    Workbooks(PharmacyPricingGuarantees2).Sheets("Pharmacy Pricing Guarantees").Range("Remove_Allowances_Credits").Delete
End If

Я получаю сообщение об ошибке 1004

If Application.WorksheetFunction.Count(Range("Allowances_Credits_Range")) = Application.WorksheetFunction.Count(Range("Allowances_Credits_Range", "n/a")) Then

    Workbooks(PharmacyPricingGuarantees2).Sheets("Pharmacy Pricing Guarantees").Range("Remove_Allowances_Credits").Delete
End If

Чтобы удалить именованный диапазон "Remove_Allowances_Credits" Я получаю сообщение об ошибке 1004

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Не совсем уверен, чего вы пытаетесь достичь, поэтому я добавил несколько разных методов.

Sub Examples()
    'Might need to change Workbook reference to PharmacyPricingGuarantees2?
    Dim ws As Worksheet: Set ws = Thisworkbook.Sheets("Pharmacy Pricing Guarantees")
    If ws.Range("Allowances_Credits_Range").Cells.Count = WorksheetFunction.CountIf(ws.Range("Allowances_Credits_Range"), "n/a") Then
        ws.Range("Remove_Allowances_Credits").ClearContents  '<-- Clear the values?
        ws.Range("Remove_Allowances_Credits").EntireRow.Delete '<-- Delete the rows?
        ThisWorkbook.Names("Remove_Allowances_Credits").Delete '<-- Delete the named range?
    End If
End Sub
0 голосов
/ 09 января 2019

Попробуйте следующее:

If Application.WorksheetFunction.COUNTA(Range("Allowances_Credits_Range")) = 
Application.WorksheetFunction.COUNTIF(Range("Allowances_Credits_Range"), "#N/A")) Then

    Workbooks(PharmacyPricingGuarantees2).Sheets("Pharmacy Pricing Guarantees").Range("Remove_Allowances_Credits").Delete

End If

Во-первых, вы хотите использовать COUNTA вместо COUNT для первой части. COUNT учитывает только числовые значения. COUNTA считает все непустые значения (включая # Н / Д).

Во-вторых, вы хотите использовать функцию COUNTIF для подсчета значений = # N / A.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...