0

私はこれまで使ったことがAVERGEIFSなく、少し複雑になりすぎているので、助けてください。

列値Bが2に等しく、列A値が3未満の行の列Aの列値を平均したい範囲があるので、これは正しいです:

    WorksheetFunction.averageifs(columnA, columnA, "<3", columnB, "2") 

編集 「タイプの不一致」が表示されます

ColumnA と ColumnB は範囲です。 if 文ではこれが必要です

IF columnA < 3 AND columnB = 2 Then Average(columnA)

編集

これは私のタイプと関係があるに違いないと仮定してい1004 cannot get the averageifs property of class worksheetfunctionます。パラメーターを入力すると、 averageifs は a をスローしますが、 countifs13 Type Mismatchは同じパラメーターを指定してスローします。

For Each column In importsheet.UsedRange.Columns
    colcount = .CountIfs(column, column, "<3", importsheet.UsedRange.Columns(DepColumn), sec)
Next

DepColumn と colcount は整数で、sec は整数 ("2") の文字列で、 上記のエラーの clusterfuck は、それをストロークします。

4

2 に答える 2

2

と が同じサイズの範囲であると仮定するとcolumnAcolumnB式は正しいです。

WorksheetFunction.Averageifs(Range("A:A"),Range("A:A"),"<3",Range("B:B"),"2")

A <3およびB = 2の列Aの平均を返します。

于 2013-03-07T08:33:49.500 に答える
2

投稿されたコードの構文が正しい場合

  • Dim'edcolumnAおよびcolumnBas Range'を実行してSetから、有効な範囲に
  • シートのデータが結果を返す (つまり、基準を満たす行が少なくとも 1 つある)

エラー処理のデモ:

Sub Demo()
    Dim columnA As Range
    Dim columnB As Range
    Dim v
    Set columnA = [A:A]
    Set columnB = [B:B]

    On Error Resume Next
    v = WorksheetFunction.AverageIfs(columnA, columnA, "<3", columnB, "2")
    If Err.Number = 1004 Then
        'No matching data
        v = CVErr(xlErrNA)
    End If
    On Error GoTo 0

End Sub
于 2013-03-07T08:51:58.273 に答える