Application.Countifsを使用してワークシートから値を返す際に問題が発生しました。ここではそれを呼び出すために、既存の方法です:VBA - 0 /ブール値を返すカウンタ
Application.CountIfs(sortws.Range(sortws.Cells(1, 3), sortws.Cells(sortws.Rows.Count, 3).End(xlUp)), _
CStr(sortws.Cells(x2, 3)), _
sortws.Range(sortws.Cells(1, 4), sortws.Cells(sortws.Rows.Count, 4).End(xlUp)), _
CStr(sortws.Cells(x2, 4)), _
sortws.Range(sortws.Cells(1, x3), sortws.Cells(sortws.Rows.Count, x3).End(xlUp)), _
Chr(34) & "<>" & Chr(34) & "&0")
この場合、2つの変数が反復ループでは - x2は、スプレッドシート上の行に相当し、x3は列です。
私は値をPrint
とき、それは私が各範囲のために必要なアドレスと最後の引数の文字列を印刷するとき、私はこの取得を0として返します。
=COUNTIFS($C$1:$C$1201,$C$1201,$D$1:$D$1201,$D$1201,$E$1:$E$1201,"<>"&0
限り私としてどちらが、適切な機能であると伝えることができます。 私はそれで全部だこれをコピーして、ワークシートのセルに差す場合、私はEVALUATE
を使用して、VBAエディタでこの式を印刷してきたし、それが0の同じ値を返します。1.
の期待値を取得します私は元の式で得るように。また、私はこれを使って、次のデータをセルにこれを入れて試してみた:
sortws.Cells(x2,7).Formula = "=COUNTIFS($C$1:$C$1201,$C$1201,$D$1:$D$1201,$D$1201,$E$1:$E$1201,"<>"&0"
これは、式が実際にワークシートのセルにせずに、TRUEのブール値を返します。
関数の最後のビット(0に等しくない一致をチェックしている)を削除すると、最初の2つの列の合計一致数が正しく加算されます。このように、私は0をチェックするために私の構文で何かがオフだと思うが、それは何かを判断することはできません。その列のすべての値は数値です(技術的には通貨ですが、空白のワークシートであるため一般的な形式になっています)。しかし、私は手動でセルにプラグインしたときに同じ式がなぜ機能するのか紛らわしかったです。
EDIT:訂正された引用符で式を更新すると、EVALUATE関数が実行され、.Formula
のセルに挿入されます。これにより、更新された数式は"=COUNTIFS($C$1:$C$1201,$C$1201,$D$1:$D$1201,$D$1201,$E$1:$E$1201," & chr(34) & "<>" & chr(34) & "&0)"
となりますが、修正された見積もり式として0以外のセルを返す同じメソッドを使用する元の既存のメソッドは0を返しても問題は残ります。
EDIT2:私の既存のVBAメソッドは、ワークシートに必要なものを複製しようとしていたため、0チェックを簡略化して<>0
に解決しました。
'sortws.Cells(x2.7).Formula ='については、引用符付きの文字列内で引用符を二重にする必要があります。基本的にゼロ(16進数) – Jeeped