質問

私は以下の問題を修正するのが難しい:

このコードを持っていると言う

    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
.

結果として、 i_variable を結果としてメッセージボックスの文字列として取得します。

i_groupNumbera

次の結果をお持ちです。

35

尋ねているのは、整数として機能する文字列の新しい変数を取得する方法です。

私はこれを尋ねているかどうかわからない?


私は@ Engineersmnkyを言ったが、効果はありませんでした。私はサイトをチェックし、あなたのコードと一緒にいくつかの調整をしました。それでも私は見返りに必要な数を取得することはできません。これまではこれを手に入れました:

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
.

グループ(i_variable)私はそれを理解することができない?何らかの理由でそれが機能していません。

役に立ちましたか?

解決

vbaの文字列から変数値を取得できないため、CollectionオブジェクトまたはDictionaryを作成することをお勧めします。

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

その後、

を使用できるメッセージボックスではなく、ループ内で
groups(i_Variable) 
.

これは "i_groupNumbera"

の場合35を返します。

更新コレクションCollection(Key)の項目とキー構造を使用して、必要な値を返す必要がある値を指定する必要があります。

これらのグループ番号は、これらがわからないので、必要なグループ番号を使って動的にコレクションを構築する必要があります。

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
.

しかしあなたの構造についてもっと情報がありません私は基本的な例を超えて本当に助けることができません。グループ番号は何ですか?それは実際の整数ですか? VS Bとは何ですか?これはもともと考えられているよりも簡単かもしれませんので助言してください。サンプルデータや何かを置くと、私がこの働くことができると確信しているのであれば、あなたはかなり単純なループのようです。あなたはすべての細胞をループしていて、彼らが私に混乱するように見えるすべてのグループ番号であると述べています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top