我有一张Google表格,其中包含不同玩家攻击的数据及其相应的伤害。
Sheet 1中
| Player | Attack | Damage |
|:---------|:-------:|-------:|
| Iron Man | Melee | 50 |
| Iron Man | Missile | 2500 |
| Iron Man | Unibeam | 100 |
| Iron Man | Dash | 125 |
| Superman | Melee | 9000 |
| Superman | Breath | 200 |
| Superman | X-ray | 0 |
| Superman | Laser | 1500 |
| Hulk | Smash | 500 |
| Hulk | Throw | 500 |
| Hulk | Stomp | 500 |
| Hulk | Jump | 325 |
在我的第二张表中,我想列出每个玩家并显示他们的两个最佳攻击和相应的伤害。像这样:
Sheet 2中
| Player | # | Attack | Damage | Comment |
|:---------|:---:|:-------:|-------:|----------:|
| Iron Man | 1 | Missile | 2500 | |
| Iron Man | 2 | Dash | 125 | |
| Superman | 1 | Melee | 9000 | Very nice |
| Superman | 2 | Laser | 1500 | |
| Hulk | 1 | Smash | 500 | |
| Hulk | 2 | Stomp | 500 | |
更新
如果发生这种情况,某些攻击可能产生完全相同的伤害 - 我只想按字母顺序返回第一个。
我现在使用以下公式:
损坏栏:=MAX(FILTER(Sheet1!C:C,Sheet1!A:A=A2))
攻击栏:=JOIN(",",FILTER(Sheet1!B:B,Sheet1!A:A=A2,Sheet1!C:C=C2))
这将返回最佳攻击/伤害。例如,在第1/2行:
| Player | # | Attack | Damage | Comment |
| Iron Man | 1 | Missile | 2500 | |
| Iron Man | 2 | Missile | 2500 | |
但不是次佳。如何修改第二行的公式以返回次佳攻击/伤害?
更新
在第二行中使用=LARGE(Sheet1!C:C;B3)
我可以从Sheet1获得第二次最佳攻击,但它不会在播放器上进行分段。
更新2:
=ArrayFormula(LARGE(IF(Player="Iron Man",Damage),B2))
(使用命名范围)返回第一和第二最佳伤害。仍试图找出如何返回攻击名称。
答案 0 :(得分:2)
根据您提供的数据,我可以使用以下公式产生预期结果:
=query({ArrayFormula(iferror(SORT(ROW(Sheet1!A2:A),SORT(ROW(Sheet1!A2:A),Sheet1!A2:A,1),1)-MATCH(Sheet1!A2:A,SORT(Sheet1!A2:A),0))) , sort(A2:C, 1, 0, 3, 0)}, "Select Col2, Col1, Col3, Col4 where Col1 < 3 ")
看看你是否可以使用它来处理你的数据。
编辑:根据以下评论,这里是更新版本。
=query({ArrayFormula(iferror(SORT(ROW(Sheet1!A2:A),SORT(ROW(Sheet1!A2:A),Sheet1!A2:A,1),1)-MATCH(Sheet1!A2:A,SORT(Sheet1!A2:A),0))) , Sheet1!A2:C}, "Select Col2, Col1, Col3, Col4 where Col1 < 3 order by Col2")
答案 1 :(得分:1)
我使用了两种不同的公式:
答案 2 :(得分:1)
给予JPV学分但是用它来获得另一张纸的答案:
=查询({ARRAYFORMULA(IFERROR(SORT(ROW(Sheet 1中!A2:B),SORT(ROW(Sheet 1中!A2:A),工作表Sheet A2:!A,1),1) - 匹配(Sheet 1中A2 :A,SORT(Sheet1!A2:A),0)-ROW()+ 1)),sort(Sheet1!A2:C,1,1,3,0)},“选择Col2,Col1,Col3,Col4其中Col1 <3“)
答案 3 :(得分:0)