2023/07/10(Mon) 13:32:04 編集(投稿者)
2023/07/10(Mon) 13:27:13 編集(投稿者)
okwebで質問を探したところ
https://okwave.jp/qa/q10155169.html
のようですね。
漢字のリストが$E$2:$T$11の1,4,7,10,13,16列にあり、
数字のリストが$C$2:$R$11の1,4,7,10,13,16列にある場合、
各列を一列に並べ、INDEXとMATCHで検索する力技です。
列数が多くなったりすると数式が長くなり面倒ですができないことはないという程度でご覧ください。
VBAが使えるならそっちの方が楽だとおもいます。
=INDEX(VSTACK(CHOOSECOLS($C$2:$R$11,1),CHOOSECOLS($C$2:$R$11,4),CHOOSECOLS($C$2:$R$11,7),CHOOSECOLS($C$2:$R$11,10),
CHOOSECOLS($C$2:$R$11,13),CHOOSECOLS($C$2:$R$11,16)),
MATCH(A1,VSTACK(CHOOSECOLS($E$2:$T$11,1),CHOOSECOLS($E$2:$T$11,4),CHOOSECOLS($E$2:$T$11,7),CHOOSECOLS($E$2:$T$11,10),
CHOOSECOLS($E$2:$T$11,13),CHOOSECOLS($E$2:$T$11,16)),0))
(追加)
VBAが楽と書いたので、コードを書いてみました。
データの範囲は C2:T11です。
なお、A列に探す文字があって、B列に値を返します。
Sub test()
Dim myData As Variant
Dim i As Long, j As Long, k As Long
myData = Range("C2:T11").Value
For i = LBound(myData) To UBound(myData)
For j = 3 To 18 Step 3
For k = 1 To 17
If myData(i, j) = Cells(k, 1).Value Then
Cells(k, 2).Value = myData(i, j - 2)
Exit For
End If
Next k
Next j
Next i
End Sub