Excel 행렬 수식은 행렬(벡터)을 반환해야 하지만 단일(스칼라) 값을 반환합니다.

Excel 행렬 수식은 행렬(벡터)을 반환해야 하지만 단일(스칼라) 값을 반환합니다.

예, 읽었습니다:Excel: 행렬 수식 - 행렬(벡터)이 반환되지 않는 이유는 무엇입니까?그러나 이것은 동일하지 않습니다.

기본적으로 수식이 왜 다음과 같은지 알 수 없습니다. {=MATCH({1,2,3},{1,2,3},0)}일반적으로 행렬(벡터)을 반환하면 {1,2,3}단일 값을 반환합니다.

다음 예를 고려하십시오.
참고: 소개가 매우 깁니다. 흥미로운 부분은 굵은 텍스트 아래에서 시작됩니다. "지금까지 모든 것이 예상대로 작동합니다."

Name와 Revision 이 포함된 테이블이 있습니다 columns.

  • 나는 각각의 고유한 이름에 대해 하나의 고유한 정수를 갖고 싶습니다 GroupNo.
  • 그런 다음 개정 값에 따라 GroupNo소수 부분 에 추가하십시오 ( )RevPart""=0, "a"=0.01, ...
  • GroupNo+RevPartFullGroupNo( FGN) 라고 불린다 .
  • FGN각 이름 그룹의 최대값을 알고 싶습니다 : MaxInGroup( MIG)

이는 테이블( Table1)의 여러 열을 사용하여 쉽게 수행할 수 있습니다.

GroupNo:     =MATCH([@Name],[Name],0)
RevPart:     =INDEX({0,1},MATCH([@Revision],{"","a"},0))/100
FullGroupNo: =[@GroupNo]+[@RevPart]
MaxInGroup: {=MAX(([@GroupNo]=[GroupNo])*[FullGroupNo])}

Table1
+------+----------+---------+---------+-------------+------------+
| Name | Revision | GroupNo | RevPart | FullGroupNo | MaxInGroup |
+------+----------+---------+---------+-------------+------------+
| A    | =""      |       1 |       0 |           1 |       1,01 |
| A    | a        |       1 |    0,01 |        1,01 |       1,01 |
| B    | =""      |       3 |       0 |           3 |          3 |
| C    | =""      |       4 |       0 |           4 |       4,01 |
| C    | a        |       4 |    0,01 |        4,01 |       4,01 |
+------+----------+---------+---------+-------------+------------+
Note: ="" means there is a blank string in the cell (formula ="")

( FullGroupNo) 는 및 열만 FGN참조하는 하나의 수식에서 얻을 수 있습니다 .NameRevision

FGN_2: {=(INDEX({0,1},MATCH([@Revision],{"","a"},0))/100+MATCH([@Name],[Name],0))}
FGN_2 is a new column in the table (Table1) above. It's matrix formula returns single (not-matrix) value.
 
Area under FGN (Matrix) is an ordinary worksheet range. This whole area contains return (matrix) value.
FGN (Matrix): {=INDEX({0,1},MATCH(Table1[Revision],"","a"},0))/100+MATCH(Table1[Name],Table1[Name],0))}

Table1     Just range
+-------+  +--------------+
| FGN_2 |  | FGN (Matrix) |
+-------+  +--------------+
|     1 |  |            1 |
|  1,01 |  |         1,01 |
|     3 |  |            3 |
|     4 |  |            4 |
|  4,01 |  |         4,01 |
+-------+  +--------------+

MaxInGroup이제 단일 행렬 공식으로 통합하려고 했습니다 .

Original MaxInGroup formula:
MaxInGroup:  {=MAX(([@GroupNo]=[GroupNo])*[FullGroupNo])}

Step1
- replace[@GroupNo] with matrix formula with reference only to Name and Revision columns
MIG_1:       {=MAX((MATCH([@Name],[Name],0)=[GroupNo])*[FullGroupNo])}

Step2
- Replace (matrix) [GroupNo] with matrix formula with reference to Name and revision columns
MIG_2:       {=MAX((MATCH([@Name],[Name],0)=MATCH([Name],[Name],0))*[FullGroupNo])}

지금까지는 모든 것이 예상대로 작동합니다.

Step3
- Replace (matrix) [FullGroupNo] in MIG_2 with matrix formula with reference to Name and Revidion columns
  (so, basicaly I need formula from FGN (Matrix) used before

MIG_3:  {=MAX((MATCH([@Name],[Name],0)=MATCH([Name],[Name],0))*(INDEX({0,1},MATCH([Revision],{"","a"},0))/100+MATCH([Name],[Name],0)))}
Note: MIG_3 is part of the Table1 so column names only are enough

So now we could have same values in MaxInGroup, MIG_1-3 columns. But no. We haven't.
The RevPart in MIG_3 depends only on the firs Revision value.

+------+----------+------------+-------+-------+-------+
| Name | Revision | MaxInGroup | MIG_1 | MIG_2 | MIG_3 |
+------+----------+------------+-------+-------+-------+
| A    | =""      |       1,01 |  1,01 |  1,01 |     1 |
| A    | a        |       1,01 |  1,01 |  1,01 |     1 |
| B    | =""      |          3 |     3 |     3 |     3 |
| C    | =""      |       4,01 |  4,01 |  4,01 |     4 |
| C    | a        |       4,01 |  4,01 |  4,01 |     4 |
+------+----------+------------+-------+-------+-------+
Versus
+------+----------+------------+-------+-------+-------+
| Name | Revision | MaxInGroup | MIG_1 | MIG_2 | MIG_3 |
+------+----------+------------+-------+-------+-------+
| A    | a        |       1,01 |  1,01 |  1,01 |  1,01 |
| A    | a        |       1,01 |  1,01 |  1,01 |  1,01 |
| B    | =""      |          3 |     3 |     3 |  3,01 |
| C    | =""      |       4,01 |  4,01 |  4,01 |  4,01 |
| C    | a        |       4,01 |  4,01 |  4,01 |  4,01 |
+------+----------+------------+-------+-------+-------+
Note: ="" means there is a blank string in the cell (formula ="")

관련 정보