1

私の質問は非常にトリッキーなので、できるだけ明確にしようと思います。

私のプログラムでは、セルの値をデータベースと比較して一致を見つけます。比較しているセルは列形式で、各セルに 1 つの単語があります。一方、私のデータベースのセルには、セルに文全体が含まれています。

: ここに画像の説明を入力

私のプログラムの目標は、場所を特定するための一致を見つけることです。データベースからセルをアクティブ化し、列からの要素の選択である「elementsListRange」の各セルと比較します(私の写真では「B2:B7」)。一致すると、ラインに 12 のスコアが追加されます。

 'loop in the DATABASE
  For i = a To b
Range("B" & i).Activate

  'try to find a match btwn active cell and one of the elements from parsed address
For Each cell In elementsListRange.Cells

  If Match(ActiveCell.Value, cell.Value) Then
    Range("K" & i).Value = Range("K" & i).Value + 12
    Else
    Range("K" & i).Value = Range("K" & i).Value + 0
  End If
Next

したがって、この場合、セル 1 (企業)、セル 2 (中央)、セル 3 (建物) で 3 回一致し、合計 36 ポイントになります。

これが私がやりたいことです:今、単語の位置を考慮してより正確にしたいと思います。したがって、データベースのセルが「Corporate Center Building」で、Corporate/Center と Building という単語が同じ順序で表示されている場合、さらにポイントが追加されます。アイデアは: アクティブなセルとセル 1 (企業) が一致する場合、12 ポイントを追加して、別のチェックを行います: アクティブなセルとセル 1 + セル 2 (企業センター) が一致する場合、さらに 10 ポイントを追加し、別の場合: アクティブなセルとセル 1 + セル 2 + セル 3 (企業センタービル) が一致する場合、15 点を追加します。

そのため、一致を見つけるだけでなく、単語の位置を重視します。そのため、入力が「Corporate Center Building」で、データベースに「Corporate Center Building」と「Building Corporate Center」の両方がある場合、正しい一致にはより多くのポイントが与えられます。

このようなもの :

'loop in the DATABASE
  For i = a To b
Range("B" & i).Activate

  'try to find a match btwn active cell and one of the elements from parsed address
For Each cell In elementsListRange.Cells

  If Match(ActiveCell.Value, cell.Value) Then
    Range("K" & i).Value = Range("K" & i).Value + 12

       If Match(ActiveCell.Value, cell.Value + cell.offest(1,0).Value) Then
       Range("K"&i).Value = Range("K"&i).Value + 10

              If Match(ActiveCell.Value, cell.Value + cell.offest(1,0).Value + cell.offset(2,0).Value) Then 
              ....  ..... ..... + 15 
              and so on

              Else
              End If

       Else
       End If

    Else
    Range("K" & i).Value = Range("K" & i).Value + 0
  End If
Next

そして最後に、ここに私の質問があります:

残念ながら、これをこのように書くことはできません:

 If Match(ActiveCell.Value, cell.Value + cell.offest(1,0).Value)

この考えを表現する方法を知っていますか?前もって感謝します。

4

1 に答える 1