Frage

Ich habe Schwierigkeiten, das folgende Problem zu beheben, mit dem ich konfrontiert bin:

Nehmen wir an, ich habe diesen Code

    i_GroupNumberA = Application.WorksheetFunction.CountIf(Sheets("SheetX").Range("G2:G500"), "Red")
    i_GroupNumberB = Application.WorksheetFunction.CountIf(Sheets("SheetX").Range("G2:G500"), "Green")

    For i = 2 To LastRow
        For j = 2 To LastCol

            groupNumber = Sheets("Sheet1").Cells(i, j).Value

            i_GroupNumberA = 35 'this number a integer that I have got from a cells.value
            i_GroupNumberB = 39

            If groupNumber = Sheets("Sheet1").Cells(i, j).Value Then

                  i_Variable = "i_" + groupNumber + "AlphabeticLetter"

                  MsgBox i_Variable

            End If

        Next j
    Next i

Als Ergebnis bekomme ich i_Variable als String in einer Messagebox als Ergebnis:

I_gruppennummer A

Ich möchte folgendes Ergebnis haben:

35

Ich frage, wie ich eine neue Variable einer Zeichenfolge erhalten kann, die als Ganzzahl funktioniert.

Ich bin mir nicht sicher, ob ich das richtig frage?


Ich habe getan, was @engineersmnky gesagt hat, aber keine Wirkung.Ich überprüfe Websites und habe zusammen mit Ihrem Code einige Anpassungen vorgenommen.Aber ich kann immer noch nicht die benötigte Nummer dafür bekommen.Bisher habe ich das verstanden:

Dim Group As New Collection 


i_GroupNumberA = Application.WorksheetFunction.CountIf(Sheets("SheetX").Range("G2:G500"), "Red") 'lets assume it is an number 35
    i_GroupNumberB = Application.WorksheetFunction.CountIf(Sheets("SheetX").Range("G2:G500"), "Green") 'lets assume it is an number 39

Group.Add i_GroupNumberA
Group.Add i_GroupNumberB

For i = 2 To LastRow
    For j = 2 To LastCol
         groupNumber = Sheets("Sheet1").Cells(i, j).Value
         i_Variable = "i_" + groupNumber + "AlphabeticLetter"
         Group(i_Variable)
    Next j
Next i

Gruppe (i_variable) Ich kann es nicht herausfinden?aus irgendeinem Grund funktioniert es nicht.

War es hilfreich?

Lösung

Da Sie keinen Variablenwert aus einer Zeichenfolge in erhalten können vba Ich würde vorschlagen, eine zu erstellen Collection Objekt oder ein Dictionary wenn Sie etwas vielfältigeres brauchen

dim groups AS New Collection
           'Value, Key
groups.Add 35, "i_GroupNumberA"
groups.Add 39, "i_GroupNumberB"

Dann können Sie in Ihrer Schleife anstelle des Meldungsfelds Folgendes verwenden

groups(i_Variable) 

Dies gibt 35 für "i_GroupNumberA" zurück

Update Sammlungen verwenden eine Element- und Schlüsselstruktur für Collection(Key) um den gewünschten Wert zurückzugeben, müssen Sie Folgendes angeben key

Möglicherweise müssen Sie eine Sammlung dynamisch mit Ihren benötigten Gruppennummern erstellen, da ich mir nicht sicher bin, was diese sind, z.

Function buildCollection(val As Variant,alpha AS String) AS Collection
   Dim groups As New Collection
   For i = 2 To LastRow
     For j = 2 To LastCol
       groupNumber = Sheets("Sheet1").Cells(i, j).Value
       i_Variable = "i_" & CStr(groupNumber) & alpha 
       groups.Add val, i_Variable
     Next j
   Next i
   set buildCollection = groups
End

Aber ohne weitere Informationen zu Ihrer Struktur kann ich über grundlegende Beispiele hinaus nicht wirklich helfen.Was ist die Gruppennummer?Ist es eine tatsächliche Ganzzahl?Was ist A vs B?Bitte raten Sie, da dies möglicherweise einfacher ist, als ich ursprünglich dachte.Wenn Sie einige Beispieldaten oder etwas Anderes eingeben, bin ich mir sicher, dass ich das für Sie zum Laufen bringen könnte, scheint eine ziemlich einfache Schleife zu sein.Obwohl Sie alle Zellen durchlaufen und angeben, dass es sich um Gruppennummern handelt, was mir verwirrend erscheint.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top