Montag, Januar 20, 2020

Erstellen einer VBA-Formel mit ZÄHLENWENN

Bin ich eine Formel erstellen, um zu zählen, basierend auf 2 Bedingungen. Meine Logik ist falsch – wieder einmal.

Wenn ich (manuell) enter enter code die Summe der Formel (ZÄHLENWENNS) in die richtige Zelle selbst, bringt es richtig:

COUNTIFS(E4:E1362,"Requirement",S4:S1362, "<>4")

Wenn ich führen Sie die folgende code-Zeile, ich bekomme keine Fehler, aber anstatt, alle Summen sind gleich null.

Range("G" & Start(groups) - 1).Formula = "=COUNTIFS(E" & Start(groups) & ":E" & Finish(groups) & "," & "Requirement" & ",S" & Start(groups) & ":S" & Finish(groups) & "," & Chr(34) & "<>4" & Chr(34) & ")"

Erkannte ich, dass die ZÄHLENWENNS Vergleich wurde der Wert in der Spalte S der string „<>4“. Und keine der Zellen enthalten, der string. Dies ist der Grund, warum alle meine Werte waren null. Ich will nicht den Vergleich auf, dass gegen string. Ich will den Vergleich auf Spalte S Wert NICHT gleich 4.

So, ich habe die Zeile (und Variationen, um es zu erhalten zu arbeiten):

Range("G" & Start(groups) - 1).Formula = "=COUNTIFS(E" & Start(groups) & ":E" & Finish(groups) & "," & "Requirement" & ",S" & Start(groups) & ":S" & Finish(groups) & "," & Chr(34) & "<>" & Chr(34) & "4)"

So, ich bin ratlos. (1) habe ich manuell in die Formel eingeben und es funktioniert. (2) Baue ich es in VBA, und es nicht die Summe korrekt. (3) ich schaue nach oben, wie zu bauen, die Formel richtig, und ich bekomme Fehler immer und immer wieder. Wie es scheint, der einzige Weg, um diese Arbeit zu behalten-die Anführungszeichen innerhalb von Anführungszeichen, aber ich will nicht zu vergleichen gegen die saite.

Macht das Sinn? Ich bin mir nicht gefällt mein Arbeitsblatt mehr. Es ist nicht mehr lustig. 🙁

Danke Ihnen so sehr.

  • Dein problem ist nicht das zitieren Requirement im VBA. SeanC die Antwort von unten ist richtig.
InformationsquelleAutor Aerogal31 | 2012-12-06

4 Kommentare

  1. 1

    Ich denke, alle die Chr(34) sind immer in der Art von Sie sehen, die Formel richtig. versuchen Sie es mit "" um das Angebot für die Formel.

    .Formula = "=COUNTIFS(E4:E1362,""Requirement"",S4:S1362,""<>4"")"

    mit Ihrem Start und Finish Funktionen, würde die Formel ändern zu:

    .Formula = "=COUNTIFS(E" & Start(groups) & ":E" & Finish(groups) & _
        ",""Requirement"",S" & Start(groups) & ":S" & Finish(groups) & ",""<>4"")"
  2. 1

    Nun ja, Ein problem, das ich fand, es war ganz einfach, statt mit „,“ Sie müssen mit „;“.
    Es hängt von der version, die Sie verwendet, einige mit „,“ und andere mit „;“. Sie können es einfach mal ausprobieren, ich hoffe das es dein problem gelöst hat.

    und das zweite „Forderung“ gibt, ich denke, Sie sollten verwenden Sie doppelte Anführungszeichen statt.

    und für Ihren Fall Zu erfüllen Diese Bedingung:

    COUNTIFS(E4:E1362,"Requirement",S4:S1362, "<>4")

    Verwenden:

     "=COUNTIF(E" & Start(groups) & ":" & "E" & Finish(groups) & "," & """Requirement""" & "," & "S" & Start(groups) & ":" & "S" & Finish(groups) & "," & """<>4"")"

    Ich denke, es Sollte Funktionieren (wenn ich verpassen Sie keine Anführungszeichen denken).

  3. 0

    … Versuchen, das entfernen der chr(34) und die zusätzlichen Angebote – Es sollte genau so Aussehen wie die „Voraussetzung“ Kriterien:

    Range("G" & Start(groups) - 1).Formula = "=COUNTIFS(E" & Start(groups) & ":E" & Finish(groups) & ",""Requirement"",S" & Start(groups) & ":S" & Finish(groups) & ",""<>4"")"
    • Ich versuchte einen anderen Weg zum Aufbau dieser Formel, und zwar habe ich nicht alle Fehler, die Summen waren noch immer auf null (was bedeutet, dass ich bin immer noch der Vergleich gegen einen string, glaube ich): Range(„G“ & Start(Gruppen) – 1).Formel = „=ZÄHLENWENNS(E“ & Start(Gruppen) & „:E“ & Ziel(Gruppen) & „,“ & „Anforderung“ & „,S“ & Start(Gruppen) & „:S“ & Ziel(Gruppen) & „,““<>4″“)“
    • John – ich Tat genau das, was Sie vorgeschlagen… noch Nullen. Weiß nicht, was ich falsch mache. Sorry, ich mis-Lesen Sie Ihren ersten Beitrag. Wenn ich mir die Formel Links in den Zellen, es hat immer noch Anführungszeichen um die <>4. >:/
    • möchten Sie die Zitate aroudn die <>4 oder nicht? Ihre original-Beitrag zeigte, dass es in Anführungszeichen setzen muss??? – Wenn Sie es wollen, OHNE die Anführungszeichen, ändern Sie einfach das Teil in meine Formel oben ",<>4)"
    • Ich bin mir nicht mehr sicher 🙁 ich habe versucht, es auf diese Weise, und ich bekam eine Fehlermeldung. Ich habe versucht, so viele Dinge, um diese zum arbeiten… ich weiß, ich bin beginnend zu klingen wie ich bin, aufzugeben, und ich bin sorry about that. Ich habe versucht, so viele Permutationen. Die zweite Bedingung ist, um zu testen, gegen eine Reihe (D. H., 4). Die erste Bedingung ist der test gegen eine Zeichenfolge (D. H., Voraussetzung). Ich habe sogar versucht Range(„G“ & Start(Gruppen) – 1).Formel = „=ANZAHL(WENN((S“ & Start(Gruppen) & „:S“ & Ziel(Gruppen) & „,““<>4″“))““,E“ & Start(Gruppen) & „:E“ & Ziel(Gruppen) & „) “ – natürlich, ich erhalte eine Fehler mit dieser auch.
    • Vielen Dank für die Zeit nehmen, dies zu betrachten. Ich Schätze das feedback.
  4. 0

    Nach dem ausführen eines quick-test mit dem ersten code

    Range("G1").Formula = "=COUNTIFS(E1" & ":E20" & "," & "Requirement" & ",S1" & ":S20" & "," & Chr(34) & "<>4" & Chr(34) & ")"

    Leicht verändert-Konto für die Gruppen-variable Zelle G1 landet mit der folgenden Formel:

    =COUNTIFS(E1:E20,requirement,S1:S20,"<>4")

    die, wenn getestet, funktioniert völlig in Ordnung, denn die zweite if-Anweisung S1:S20,“<>4″.
    Ich würde vermuten, dass das problem mit Ihrer ersten Aussage. Was ist in Ihrer Anforderung Reichweite und was Daten sind Sie versucht, mit.

    Ich die Anforderung benannten Bereich um die Zelle D5, trat ich eine 5 in es und die Formel würde Schrittweite jedes mal, wenn ich fügte hinzu, eine zusätzliche 5 auf den Bereich E1:E20.
    Ich begann dann Eingabe 4 s in den Bereich S1:s20 und diese verringerte meiner Zählung.

    Bearbeiten
    Das Letzte, was, das ich vorschlagen kann, ist in einer hilfsspalte in Spalte F, wertet Zeile, um zu sehen, ob Sie mit der Anforderung Bedingung, dann wäre es eine einfache Sache, um Ihre Formel:

    =COUNTIFS(F1:F20,TRUE,S1:S20,"<>4")
    • Rick, ich möchte Ihnen Zustimmen. Das problem ist, dass diese Anweisung wird verwendet, um nur eine „ZÄHLENWENN“ mit der ersten Bedingung (Vergleich gegen Anforderung). Und es funktionierte wirklich gut. Ich habe ein Tabellenblatt voller Hunderte von Anforderungen und Sie sind gruppiert in all diesen Untergruppen, die jeweils summiert korrekt in Ihren jeweiligen Gruppen. Wenn ich die 2. Bedingung (nur zählen Vorschriften, die nicht level 4) es weht diese in Stücke. Ich bekomme null-Summen. So frustrierend. Nun sind diese Anforderungen haben 3 Zeilen zugeordnet werden, weshalb die Spalte ist die Prüfung für „Anforderung“ ersten.
    • Können Sie mir ein Beispiel von Ihrer Anforderung Daten

Kostenlose Online-Tests