2016-10-24 7 views
0

テーブルの目的の行インデックスを検索しようとしています。難しい点は、列にある複数の値をチェックする必要があることです。引数の数がxの検索テーブル

たとえば、

  • 表1には、一意の行

を見つけるために、3つの列を持っている私は私の機能をしたいと思います。表2は、一意の行に

  • 表3を見つけるために、2列があり
  • 1つの一意の列を持っています列の指定された引数の数を検索します。しかし、私はどのように知っている。

    私は配列{"Value1", "Value2", "Value3"}

    を渡すのを考えていた。しかし、行が一致した場合にどのように私は、引数の数に基づいて確認することができますか?

    私はこのような何かを考えていましたが、おそらくこの問題のより良い解決策がありますか?

    Private Function FindRow(ByVal StringArray As String()) As Integer 
        Dim NumberOfArguments As Integer = oStringArray.Length 
        Dim MatchesCount As Integer = 0 
    
        For i = 0 as integer to rows.count 
    
         For x = 0 as integer to columns.count 
          For y = 0 as integer to NumberOfArguments 
           If Row(i).Column(x).value = StringArray(y) Then 
            MatchesCount += 1 
           End If 
          Next 
         Next 
    
         If MatchesCount = NumberOfArguments Then 
          FindRow = i 
         End If 
        Next 
    End Function 
    
  • +0

    2つの値を渡す場合は、最初の2つの列のみを検索しますか?または、4つの列を持ち、2つの値を渡して、4つの列のうちの2つの列を一致させたい場合は可能ですか? – djv

    +0

    x個の列を持ち、2個の値を渡して2個の列に一致させることは可能です。 –

    +0

    @jmcilhinneyはParamArrayで適切なアイデアを持っていると思います。彼の関数の署名を使用する必要がありますが、あなたのロジック – djv

    答えて

    1
    Private Function FindRowIndex(ParamArray values As String()) As Integer 
        For i = 0 To rows.Count - 1 
         Dim row = rows(i) 
         Dim match = True 
    
         For j = 0 To values.Length - 1 
          If Not row(j).Equals(values(j)) Then 
           match = False 
           Exit For 
          End If 
         Next 
    
         If match Then 
          Return i 
         Next 
        Next 
    
        Return -1 
    End Function 
    

    メソッドのパラメータはParamArray宣言されているので、あなたはそれを呼び出すと、むしろ明示的に配列を作成するよりも、複数の離散的な値を渡すことができます。

    関連する問題