Assuming there is only one instance where:
A1:A100="x" AND B1:B100="y" AND C1:C100="z"
When all those logical tests are multiplied together the result will be an array of 0s and a 1. Then we want to find the 1 in that array and return the corresponding value from column D.
Let's see how that works with this sample data:
Sheet1
<colgroup><col style="font-weight:bold; width:30px; "><col style="width:55px;"><col style="width:55px;"><col style="width:55px;"><col style="width:55px;"></colgroup><tbody>
[TD="bgcolor: #cacaca, align: center"]1[/TD]
[TD="align: center"]A[/TD]
[TD="align: center"]G[/TD]
[TD="align: center"]Z[/TD]
[TD="align: center"]Data1[/TD]
[TD="bgcolor: #cacaca, align: center"]2[/TD]
[TD="align: center"]X[/TD]
[TD="align: center"]Y[/TD]
[TD="align: center"]Z[/TD]
[TD="align: center"]Data2[/TD]
[TD="bgcolor: #cacaca, align: center"]3[/TD]
[TD="align: center"]G[/TD]
[TD="align: center"]Y[/TD]
[TD="align: center"]T[/TD]
[TD="align: center"]Data3[/TD]
[TD="bgcolor: #cacaca, align: center"]4[/TD]
[TD="align: center"]R[/TD]
[TD="align: center"]R[/TD]
[TD="align: center"]R[/TD]
[TD="align: center"]Data4[/TD]
[TD="bgcolor: #cacaca, align: center"]5[/TD]
[TD="align: center"]X[/TD]
[TD="align: center"]P[/TD]
[TD="align: center"]Y[/TD]
[TD="align: center"]Data5[/TD]
</tbody>
This array formula**:
=INDEX(D1:D5,MATCH(1,(A1:A5="x")*(B1:B5="y")*(C1:C5="z"),0))
Result = Data2
Each of these expressions will return an array of TRUE or FALSE:
(A1:A5="x")
(B1:B5="y")
(C1:C5="z")
A1 = X = FALSE
A2 = X = TRUE
A3 = X = FALSE
A4 = X = FALSE
A5 = X = TRUE
B1 = Y = FALSE
B2 = Y = TRUE
B3 = Y = TRUE
B4 = Y = FALSE
B5 = Y = FALSE
C1 = Z = TRUE
C2 = Z = TRUE
C3 = Z = FALSE
C4 = Z = FALSE
C5 = Z = FALSE
Then these arrays are multiplied together:
FALSE * FALSE * TRUE = 0
TRUE * TRUE * TRUE = 1
FALSE * TRUE * FALSE = 0
FALSE * FALSE * FALSE = 0
TRUE * FALSE * FALSE = 0
We now have this array:
0
1
0
0
0
When we align that array with the range we want the result to come from:
0 Data1
1 Data2
0 Data3
0 Data4
0 Data5
So we look for the 1 and return the result from column D that corresponds to the 1.
=INDEX({Data1;Data2;Data3;Data4;Data5},MATCH(1,{0;1;0;0;0},0))
MATCH returns the *relative* position of the lookup value within an array. In this case MATCH = 2.
Return the value from position 2 of this array:
Position 1 = Data1
Position 2 = Data2
Position 3 = Data3
Position 4 = Data4
Position 5 = Data5
Position 2 = Data2
So:
=INDEX(D1:D5,MATCH(1,(A1:A5="x")*(B1:B5="y")*(C1:C5="z"),0))
= Data2