Смещение в JavaScript UDF? VBA для примера - PullRequest
0 голосов
/ 06 ноября 2019

Я задавал тот же вопрос ранее здесь ( Для Loop JavaScript? VBA для примера ), но я не был достаточно конкретен, поэтому не получил ответ, который искал. Как я могу создать подобный код в JavaScript? Это может помочь https://poi.apache.org/apidocs/dev/org/apache/poi/ss/formula/functions/Offset.html

. Вот что я имею в виду, это сводный расчет затрат родителей и детей в VBA. В столбце I есть формула, которая находится в столбце H. Я хочу создать формулу, подобную этой в JavaScript.

Function ParentChildCalc(critCell As Range, valCell As Range) As Double
    Dim numYes As Long
    Dim i As Long
    Dim temp As Double
    Do Until i = 5000
        If critCell.Offset(i, 0) = "Yes" Then numYes = numYes + 1 'If the cell below says "Yes" then this sums all the 'valCells' until that "yes"
        If numYes = 2 Then Exit Do                                'We only want to sum the numbers between each one of the "Yes's"
        temp = temp + valCell.Offset(i, 0)                        'see Console.log(temp) tab to see what temp does
        i = i + 1
    Loop
    ParentChildCalc = temp
End Function

enter image description here

Вот мойлучший выстрел в JavaScript. Я планирую использовать это с Office.js. Я не знаю, как компенсировать.

/**
 * ParentChildCalc1
 * @customfunction ParentChildCalc1
 * @param {string} critCell Critical Cell
 * @param {number} valCell Value Cell
 * @returns {number} ParentChildCalc1
 */
function ParentChildCalc1(critCell, valCell) {
  var numYes = 1;
  var i = 1;
  var temp = 1;
  while (i < 5000) {
    if (critCell.getOffsetRange(i, 0) == "Yes") {
      numYes++;
    }
    if (numYes == 2) {
      break;
    }
    temp = temp + valCell.getOffsetRange(i, 0);
    i++;
  }
  return temp;
}
...