は私の結果である結果:
+------------+---------+----------------+
| subject id | value A | Formula result |
+------------+---------+----------------+
| 1 | | Hello |
| 1 | | Hello |
| 1 | Hello | Hello |
| 1 | | Hello |
| 1 | | Hello |
| 1 | | Hello |
| 2 | | B |
| 2 | B | B |
| 2 | B | B |
| 2 | | B |
| 2 | | B |
| 2 | B | B |
| 3 | | World |
| 3 | | World |
| 3 | World | World |
| 3 | | World |
| 3 | | World |
| 4 | | D |
| 4 | D | D |
| 4 | | D |
| 4 | | D |
+------------+---------+----------------+
私はC2にそれのための式をUDFを構築し、=コードの取得(A2です$ A $ 2:$ A $ 22と、 1)ここで、最初のパラメータは検索する値、2番目は検索する範囲、最後は結果を探すためにオフセットする列です。以下
コード:
Function GetCode(InputValue As String, SearchRange As Range, ColOffset As Long)
Dim TempVal As String, FirstFoundRow As Long, LastFoundRow As Long, X As Long
On Error Resume Next 'If not found the result will be null
TempVal = Null
If WorksheetFunction.CountIf(SearchRange, InputValue) > 0 Then
FirstFoundRow = SearchRange.Find(InputValue).Row 'Determine the rows to check
LastFoundRow = SearchRange.Find(InputValue, , , , , xlPrevious).Row 'Find the last row, no need to test after that
For X = FirstFoundRow To LastFoundRow 'Loop the checking rows
TempVal = SearchRange.Cells(X, ColOffset + 1).Text 'Assign the value of the offset column for the tested row
If TempVal <> "" Then Exit For 'Quit the loop if it has found the answer
Next
End If
GetCode = TempVal
End Function
仮定: サブジェクトIDがソートされます。そうでないと、結果が間違っていても、連続していないデータのインスタンスを検索するコードを変更するだけで十分です。
注:もう少しキー詳細にあなたの質問をフォーマットしてみてください、以前のすべての答えは私がやった同じ仮定(あなたは1を持って作られた - それは簡単なことだあなたのサンプルデータとしてB - A、2私の前提を参考にして、あなたが私たちに言わなかったようにソートされたデータの前提を作らなければなりませんでした。
コピーを取ってダブを削除し、ブランクを削除するためにcol Bをソートし、新しく作成されたマトリックスに対してVLOOKUPフォーミュラを使用してください。
これらは実際の科目IDですか。私はこれがあなたのデータの簡素化だと思います。そうであれば、以下の答えが働きます。あなたが使用した答えによってチェックマークをクリックすることで、フィードバックを与え、そのうちの1つを正解にしてください。そうでなければ、式で正しいことをすることができず、 Value Aが置かれている第3の列、またはそれを実行するためのvba。 –
値A列のIDと内容は単純化されています。IDと実際のデータセットの数値である他のフィールドの値との間には固有の関係はありません。私は混乱をお詫びしますが、存在しない固有の関係を前提としているので、これまでに提供されている回答のどれも実際に私の質問に答えません。 – Luke
次に、vbaを使用して検索するか、数式を含む3番目の列を使用していますか? –