感谢您阅读我的第一个问题。我只是从Google表格开始,请多多包涵。Here is the sheet I'm working with
因此,如果我要玩游戏,此表将根据功率等级分配行会攻击。我正在寻找创建一个函数或脚本并将其放在列O中。我希望此函数将列F与列M中的特定单元格进行比较,然后返回与列F相关的用户,该用户> =列M中的单元格。类似enter image description here我以前三个示例为重点。
我显然可以手动执行此操作,但是我花了一些时间,并且一直希望使该过程自动化,因此它变得更有效率。我已经尝试了Vlookups,MATCH,IF,但没有成功。任何帮助将不胜感激。同样,我只是Google表格的初学者,所以请放轻松。 :)
[您提到您也会对脚本化解决方案感到满意,因此我创建了该脚本,相信可以解决您的问题。它具有逐步解释其工作方式的注释:
function myFunction() {
// Get our sheet
var ss = SpreadsheetApp.getActive().getSheetByName('Automate Test');
// Get the values of the ranges of F and M. Flat will convert the 2D array we get from getValues() into a 1D one which is easier to work with
var valuesF = ss.getRange('F2:F16').getValues().flat();
var valuesM = ss.getRange('M2:M16').getValues().flat();
// We will iterate through all the players in column M to find their opponents
for(i=0;i<valuesM.length;i++){
// We create an empty array to be filled with the list of possible opponents to then choose a random one of the list
var playersHigherEqual = [];
// Iterate through the opponent list
for(j=0;j<valuesF.length;j++){
// If the opponent meets the condition
if(valuesF[j]>= valuesM[i]){
// Add it to the array of possible opponents
playersHigherEqual.push(ss.getRange(j+2, 2).getValue());
}
//Finally we will set the opponent by choosing a random one out of the list. Note that i+2 is because the arrays start from 0
ss.getRange(i+2, 15).setValue(playersHigherEqual[Math.floor(Math.random()*playersHigherEqual.length)]);
}
}
}
如果您还需要一个表格公式解决方案,请告诉我。有关Apps脚本的更多信息,请查看the documentation。
我希望这对您有所帮助。让我知道您是否还需要其他什么,或者您是否不了解。 :)