如何比较特定单元格与列范围,并返回与列范围相关联的字符串?

问题描述 投票:0回答:1

感谢您阅读我的第一个问题。我只是从Google表格开始,请多多包涵。Here is the sheet I'm working with

因此,如果我要玩游戏,此表将根据功率等级分配行会攻击。我正在寻找创建一个函数或脚本并将其放在列O中。我希望此函数将列F与列M中的特定单元格进行比较,然后返回与列F相关的用户,该用户> =列M中的单元格。类似enter image description here我以前三个示例为重点。

我显然可以手动执行此操作,但是我花了一些时间,并且一直希望使该过程自动化,因此它变得更有效率。我已经尝试了Vlookups,MATCH,IF,但没有成功。任何帮助将不胜感激。同样,我只是Google表格的初学者,所以请放轻松。 :)

google-sheets google-sheets-formula google-sheets-query google-sheets-macros
1个回答
0
投票

解决方案

[您提到您也会对脚本化解决方案感到满意,因此我创建了该脚本,相信可以解决您的问题。它具有逐步解释其工作方式的注释:

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

我希望这对您有所帮助。让我知道您是否还需要其他什么,或者您是否不了解。 :)

© www.soinside.com 2019 - 2024. All rights reserved.