이전 6 경기에 대한 팀의 압연 양식 작성


2

저는 축구 점수가 많은 스프레드 시트를 가지고 있습니다. 나는 내가 말한 것을 알기 위해 그것을 붙였다.

다음은 항목 중 하나입니다.

+-----+--------+-----------+-----------+--------+--------+------------+--------+--------+----+----+----+----+------+----+------+----+------+----+----+
| Ref | Output | Home      | Away      | HTHome | HTAway |    Date    | FTHome | FTAway | HT | FT | HT | FT | Away | HT | Away | FT | Away | HT | FT |
+-----+--------+-----------+-----------+--------+--------+------------+--------+--------+----+----+----+----+------+----+------+----+------+----+----+
|  1  |    1   | Arsenal   | Leicester |    2   |    2   | 11/08/2017 |    4   |    3   |  D |  W | DW |  D |   L  | DL |      |    |      |    |    |
+-----+--------+-----------+-----------+--------+--------+------------+--------+--------+----+----+----+----+------+----+------+----+------+----+----+

이로부터 아스날이 4-3으로 승리했다는 것을 안다.

스프레드 시트에는 이와 같은 행이 많이 포함되어 있습니다. 제가하고 싶은 것은 다음 경기가 있기 전에 팀의 이전 양식을 작성하는 것입니다.

예를 들어, 박싱 데이에 리버풀은 스완지를 연기했습니다.

+-----+--------+-----------+-----------+--------+--------+------------+--------+--------+----+----+----+----+------+----+------+----+------+----+----+
| Ref | Output | Home      | Away      | HTHome | HTAway |    Date    | FTHome | FTAway | HT | FT | HT | FT | Away | HT | Away | FT | Away | HT | FT |
+-----+--------+-----------+-----------+--------+--------+------------+--------+--------+----+----+----+----+------+----+------+----+------+----+----+
| 194 |   20   | Liverpool | Swansea   |    1   |    0   | 26/12/2017 |    5   |    0   |  W |  W | WW |  L |   L  | LL |      |    |      |    |    |
+-----+--------+-----------+-----------+--------+--------+------------+--------+--------+----+----+----+----+------+----+------+----+------+----+----+

리버풀은 지난 6 경기에서 6 골을 기록했다. W W D D W D. 결국이 정보를 단일 숫자로 변환 할 것입니다. 와 3 승리를 위해, 1 끌기를 위해, 그리고 0 Loss에게는 Liverpool이 "점수"를 12.

게임은 홈과 어웨이 중 하나 일 수 있으며, 내가 플레이 한 장소와 관계없이 이전 6 경기의 형태를 알고 싶습니다. 나는 또한 공식을 아래로 드래그 할 수 있기를 바랍니다. 그러면 다음 주에 입력 할 수 있고 이전 양식이 올바르게 생성됩니다.

양식 테이블을위한 다른 솔루션을 많이 보았습니다. 시즌 내내 매치마다 이전 양식을 알고 싶기 때문에 요구 사항이 다릅니다.

또한 수식이 예를 들어 지난 3 경기의 형태를 쉽게 확인할 수 있다면 편리 할 것입니다.

Prem.xlsx

질문이 있으시면 알려주세요.


다음은 데이터에 대한 링크입니다.

http://www.football-data.co.uk/mmz4281/1718/E0.csv

답변:


3

두 개의 예제 항목이 링크 된 CSV 파일의 데이터와 일치하지 않으며 약간 명확하지 않습니다. CSV 파일을 통합 문서로 가져 와서 수정하는 것 같습니다. (그러나 통합 문서에 링크를 붙여 넣는 것을 잊었습니다.)

따라서 제 솔루션을 위해 수정되지 않은 CSV 파일 데이터를 사용하려고합니다. 실제 테이블에 맞게 수식을 조정해야합니다. 또한 관련 이전 6 개 게임의 "점수"가 개별적인 승리 / 손실 / 추첨 결과보다 실제로 계산하기가 쉽기 때문에 내 공식은 다음을 반환합니다.

Worksheet Screenshot

에 다음 공식을 입력하십시오. BN2 및 Ctrl-Enter / 복사 - 붙여 넣기 / 채우기 및 오른쪽 / 자동 채우기를 나머지 테이블의 BNBO 열 :

=IFERROR(MOD(SUMPRODUCT(LARGE(+($C$1:$C1=C2)*(100*ROW($G$1:$G1)+3*($G$1:$G1="H")+1*($G$1:$G1="D"))+($D$1:$D1=C2)*(100*ROW($G$1:$G1)+3*($G$1:$G1="A")+1*($G$1:$G1="D")),{6,5,4,3,2,1})),100),0)

설명:

공식의 prettified 버전은 다음과 같습니다 :

=
IFERROR(
  MOD(
    SUMPRODUCT(
      LARGE(
        +($C$1:$C1=C2)*(100*ROW($G$1:$G1)+3*($G$1:$G1="H")+1*($G$1:$G1="D"))
        +($D$1:$D1=C2)*(100*ROW($G$1:$G1)+3*($G$1:$G1="A")+1*($G$1:$G1="D")),
        {6,5,4,3,2,1}
      )
    ),
    100
  ),
  0
)

대상 팀이 포함 된 이전 행마다 수식이 특별한 값을 만듭니다. (다른 행의 경우 값은 0입니다.) 특수 값의 오른쪽 두 자리는 결과 값을 포함합니다 3 승리를 위해, 1 끌기를 위해, 그리고 0 손실의 경우) 가장 왼쪽 숫자에 행 번호가 포함됩니다.

그만큼 LARGE() 함수는 가장 최근에 일치하는 6 개의 행의 특수 값 (즉, 가장 왼쪽에있는 6 개의 행 번호가 가장 큰 행)을 선택합니다. 사용 SUMPRODUCT() 이 6 개 값의 결과 중 가장 오른쪽 두 자리가 결과 값의 합계, 즉 "점수"인 단일 값이 생성됩니다. 그만큼 MOD() 함수는이 점수를 추출합니다.

그만큼 IFERROR() 기능은 #NUM! 행에서 발생하는 오류 2 노를 젓다 6 (때문에 LARGE() 6 개 미만의 요소를 포함하는 배열의 최대 6 개 값을 얻으려고 시도 함).

대상 팀에 대해 이전에 6 번 미만의 일치가있는 경우 누락 된 일치 항목에 해당하는 배열 요소의 값은 0이됩니다.


수식을 밟아서 BO22 위를 명확하게해야합니다. 이후 TRUEFALSE ~로 변환된다. 10 각각 곱셈에 사용될 때, 나는 다음의 평가에서 그 숫자들을 사용할 것입니다.

  • 100*ROW($G$1:$G21)+3*($G$1:$G21="H")+1*($G$1:$G21="D")
    100*{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21}+3*({0;1;0;0;0;1;0;0;1;1;0;0;0;1;1;1;1;0;1;0;0})+1*({0;0;0;0;0;0;1;1;0;0;0;0;0;0;0;0;0;0;0;0;1})
    {100;203;300;400;500;603;701;801;903;1003;1100;1200;1300;1403;1503;1603;1703;1800;1903;2000;2101}, 모든 이전 행에 대한 홈 팀의 특별 값
  • ($C$1:$C21=D22)*({100;203;300;400;500;603;701;801;903;1003;1100;1200;1300;1403;1503;1603;1703;1800;1903;2000;2101})
    ({0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1})*({100;203;300;400;500;603;701;801;903;1003;1100;1200;1300;1403;1503;1603;1703;1800;1903;2000;2101})
    {0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;2101}, 홈 팀이 목표 팀과 일치하면 특별 값 ( D22 ) 이전의 모든 행에 대해
  • 비슷하게, ($D$1:$D21=D22)*(100*ROW($G$1:$G21)+3*($G$1:$G21="A")+1*($G$1:$G21="D"))
    {0;0;303;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0}, 특별한 값은 떨어져 팀은 모든 이전 행에 대해 대상 팀과 일치합니다.
  • +{0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;2101}+{0;0;303;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0}
    {0;0;303;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;2101}, 일치하는 경우 모든 이전 행에 대해 대상 팀이 관련된 특수 값. 두 배열이 "상호 배타적"이므로 합쳐도 아무런 간섭도 발생하지 않습니다.
  • LARGE({0;0;303;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;2101},{6,5,4,3,2,1})
    {0,0,0,0,303,2101}, 대상 팀과 관련된 이전 여섯 경기의 특별 가치
  • SUMPRODUCT({0,0,0,0,303,2101})
    2404가장 오른쪽 두 자리가 결과 값의 합계 인 "점수"이고 관련이없는 가장 왼쪽 자리수는 행 번호의 합계입니다. (참고 SUMPRODUCT() 대신에 사용된다. SUM() 내부 하위 표현식은 배열로 평가되므로 배열을 배열 입력 할 필요가 없습니다.
  • MOD(2404,100)
    4, 목표 팀과 관련된 이전 여섯 경기의 "점수"(또는 양식)

노트:

  • prettified 수식 실제로 입력 한 경우 작동합니다.
  • 당신은 FTR 열 ( G:G )을 사용하여 수식이 작동하도록 원시 CSV 파일에서 가져옵니다. (열은 꼭 필요한 것은 아니지만 수식을 사용하지 않고 수식을 조정해야합니다. 수식을 읽기 쉽도록 열을 사용하기로했습니다.)
  • 이전 세 개의 관련 게임 만 사용하도록 수식을 수정하는 것은 변화의 간단한 문제입니다. {6,5,4,3,2,1}{3,2,1}.
  • 행 크기 조정 계수는 다음 경우에만 작동합니다. [# relevant previous games]*[max outcome value] < [row scaling factor]. 예제의 값을 사용하여, 6*3=18 < 100, 그래서 우리는 그것을 볼 수 있습니다. 100 작동 할 최소 배율 인수입니다. (실제로, 최소값 10의 힘 스케일링 팩터, 19 순수한 최저한의.)
  • 관련 이전 6 경기의 개인 결과가 실제로 필요한 경우이를 답변에 추가 할 수 있습니다. 추가됨.

부록 # 1 :

현재 행의 홈 팀의 이전 여섯 경기의 개인 결과에 대해 멀티 셀 어레이 입력 ( Ctrl + 시프트 + 들어가다 ) 행의 여섯 연속 셀에 다음 수식 2 나머지 표의 열에 복사하여 붙여 넣기 / 채우기를 수행하십시오. {} ) :

{=
CHOOSE(1+
  IFERROR(
    MOD(
      LARGE(
        +($C$1:$C1=C2)*(100*ROW($G$1:$G1)+3*($G$1:$G1="H")+2*($G$1:$G1="A")+1*($G$1:$G1="D"))
        +($D$1:$D1=C2)*(100*ROW($G$1:$G1)+3*($G$1:$G1="A")+2*($G$1:$G1="H")+1*($G$1:$G1="D")),
        {6,5,4,3,2,1}
      ),
      100
    ),
    0
  ),
  "-","D","L","W"
)}

현재 행의 개별 결과 떨어져 팀의 이전 여섯 경기, 모두 변경 =C2 ...에 대한 =D2.

단일 셀에서 결과를 문자열로 반환하려면 전체 수식을 TEXTJOIN("",TRUE,…). (Excel 2016에서만 기본적으로 작동합니다. 이전 버전의 Excel에서는 폴리 필 UDF가 필요합니다. 이 게시물 기본적인 것을 위해.)

설명:

이 수식은 기본적으로 세 가지 수정 사항이있는 이전 수식과 같습니다.

  1. 결과 값 2 손실을 위해 추가된다.
  2. 결과 값은 더 이상 합산되지 않습니다.
  3. 대신, 그것들은 첫 번째 인수 (즉, 인덱스)로 사용됩니다. CHOOSE() 기능을 사용하여 적절한 결과 문자를 선택하십시오.

마지막으로, 개별 결과보다 점수 계산이 더 쉽다고 농담을하지 않은 것을 보여주기 위해 다음은 개별 점수 값을 먼저 계산하지 않는 가장 간단한 결과 공식입니다.

{=
IF(
  ISERROR(0/LARGE(ROW($G$1:$G1)*(($C$1:$C1=C2)+($D$1:$D1=C2)),{6,5,4,3,2,1})),
  "-",
IF(
  "D"=INDEX($G:$G,N(IF(1,1+LARGE((ROW($G$1:$G1)-1)*(($C$1:$C1=C2)+($D$1:$D1=C2)),{6,5,4,3,2,1})))),
  "D",
IF(
  +("H"=INDEX($G:$G,N(IF(1,1+LARGE((ROW($G$1:$G1)-1)*(($C$1:$C1=C2)+($D$1:$D1=C2)),{6,5,4,3,2,1})))))
  *(C2=INDEX($C:$C,N(IF(1,1+LARGE((ROW($G$1:$G1)-1)*(($C$1:$C1=C2)+($D$1:$D1=C2)),{6,5,4,3,2,1})))))
  +("A"=INDEX($G:$G,N(IF(1,1+LARGE((ROW($G$1:$G1)-1)*(($C$1:$C1=C2)+($D$1:$D1=C2)),{6,5,4,3,2,1})))))
  *(C2=INDEX($D:$D,N(IF(1,1+LARGE((ROW($G$1:$G1)-1)*(($C$1:$C1=C2)+($D$1:$D1=C2)),{6,5,4,3,2,1}))))),
  "W",
"L"
)))}

부록 # 2 :

이전의 모든 수식은 열 머리글 C, D, 및 G 해당 열의 데이터 값과 일치하지 않으며 열의 값은 비교에서만 사용됩니다. 이는 집 및 원정 팀에 대한 어레이의 첫 번째 요소 (즉, 머리말 행에 해당)의 값이 0이됨을 의미합니다.

그러나 열의 값이 수식에서 실제로 숫자로 사용되는 경우 마지막 6 경기에서 각 팀의 득점 총계를 얻는 경우와 마찬가지로,

=
IFERROR(
  MOD(
    SUMPRODUCT(
      LARGE(
        +($C$1:$C1=C2)*(100*ROW($E$1:$E1)+$E$1:$E1)
        +($D$1:$D1=C2)*(100*ROW($F$1:$F1)+$F$1:$F1),
        {6,5,4,3,2,1}
      )
    ),
    100
  ),
  0
)

배열의 첫 번째 요소의 값은 오류 값이됩니다. #VALUE!, LARGE() 함수는 항상 배열을 반환합니다. {#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!}수식은 항상 0을 반환합니다.

이것을 해결할 수있는 몇 가지 방법이 있습니다.

한 가지 방법은 행에서 시작하는 수식을 입력하는 것입니다. 3 행 대신에 2 범위가 행에서 시작하도록 변경 2 행 대신에 1 (예 : $C$2:$C2=C3 대신에 $C$1:$C2=C3 ). 행의 값 2 물론 항상 0이되며 수동으로 입력 할 수 있습니다.


또 다른 방법은 배열의 합을 IFERROR() 첫 번째 요소의 오류를 0으로 변환 한 다음 LARGE() 기능:

{=
IFERROR(
  MOD(
    SUMPRODUCT(
      LARGE(
        IFERROR(
          +($C$1:$C1=C2)*(100*ROW($E$1:$E1)+$E$1:$E1)
          +($D$1:$D1=C2)*(100*ROW($F$1:$F1)+$F$1:$F1),
          0
        ),
        {6,5,4,3,2,1}
      )
    ),
    100
  ),
  0
)}

노트:

  • 이 수식은 배열로 입력해야합니다. 일반적으로, SUMPRODUCT() 함수는 배열로 평가되지만 중첩 된 식 IFERROR() 예외 중 하나입니다.
  • 수식이 배열에 입력되므로, SUM() 대신에 사용할 수있다. SUMPRODUCT(). (원래 어레이 평가를 강제하는 용도로만 사용되었음을 기억하십시오 없이 수식을 배열에 입력해야합니다.)

1
정말 고마워요,이게 완벽 할 거예요. 만약 당신이 이것을 포함시킬 수 있다면, "당신이 실제로 관련된 이전 여섯 경기의 개인 결과를 필요로한다면, 나는 그 것을 대답에 추가 할 수 있습니다." 그거 정말 완벽 할것 같아. 나는 네가 준 대답이 얼마나 좋은지 믿을 수 없다. 나는 매우 감사한다 !!!!!!
Zarina Akhtar

1
@ ZarinaAkhtar Okie, 도키. 개별 결과 수식을 추가했습니다.
robinCTS

2
당신은 최고예요
Zarina Akhtar

1
안녕하세요 @robinCTS는 지난 6,3 경기에서 각 팀의 득점을 얻는 쉬운 방법에 대해 생각해보십시오. 나는 당신의 공식을 바꾸려고 노력했지만 약간 어려움을 겪고 있습니다.
Zarina Akhtar

1
@ZarinaAkhtar 그냥 홈 팀 결과 값을 대체, +3*($G$1:$G1="H")+1*($G$1:$G1="D"), 홈 팀 목표 +$E$1:$E1. 마찬가지로 팀 원정 결과 값을 대체하십시오. +3*($G$1:$G1="A")+1*($G$1:$G1="D"), 멀리 팀의 목표와 함께 +$F$1:$F1. (물론 첫 번째 수식을 사용하십시오.)
robinCTS
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.