Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Office Новый топик    Ответить
 convert vba to JS  [new]
sanstile
Member

Откуда:
Сообщений: 4
помогите конвертировать в JS(GAS)... чтобы скрипт работал в гугл таблицах.


Function SumFIFO(Products As Range, Product As String, amt As Range, price As Range)
Dim prod(), kol(), cost(), out(), i&, j&, sum#, sum2#, pr#

If Products.Count < 2 Or amt.Count < 2 Or price.Count < 2 Then SumFIFO = amt * price: Exit Function
prod = Products.Columns(1).Value
kol = amt.Columns(1).Value
cost = price.Columns(1).Value
If UBound(prod, 1) <> UBound(kol, 1) Or UBound(kol, 1) <> UBound(cost, 1) Then SumFIFO = CVErr(xlErrValue): Exit Function
ReDim out(1 To UBound(kol, 1), 1 To 1)
For i = 1 To UBound(out, 1)
  If prod(i, 1) = Product Then
        sum = 0
        If kol(i, 1) < 0 Then
            pr = -kol(i, 1)
            For j = 1 To i
              If kol(j, 1) > 0 Then
                If kol(j, 1) >= pr Then
                    kol(j, 1) = kol(j, 1) - pr
                    cost(i, 1) = (sum + pr * cost(j, 1)) / -kol(i, 1)
                    pr = 0: Exit For
                Else
                    pr = pr - kol(j, 1)
                    sum = sum + kol(j, 1) * cost(j, 1)
                    kol(j, 1) = 0
                End If
              End If
            Next j
            If pr <> 0 Then out(i, 1) = 0: Exit For
        End If
        sum2 = sum2 + kol(i, 1) * cost(i, 1)
    Else
        kol(i, 1) = 0
    End If
    out(i, 1) = sum2
Next i
SumFIFO = out
End Function
4 фев 18, 07:09    [21163876]     Ответить | Цитировать Сообщить модератору
 Re: convert vba to JS  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20519
sanstile,

Помочь? Или за вас сделать?
4 фев 18, 10:12    [21163945]     Ответить | Цитировать Сообщить модератору
 Re: convert vba to JS  [new]
sanstile
Member

Откуда:
Сообщений: 4
Shocker.Pro,

можно помочь разобраться в строке . ну можете и все сделать , если вам не затруднит .


объяснить эту строку кода
If Products.Count < 2 Or amt.Count < 2 Or price.Count < 2 Then SumFIFO = amt * price: Exit Function
prod = Products.Columns(1).Value
kol = amt.Columns(1).Value
cost = price.Columns(1).Value
If UBound(prod, 1) <> UBound(kol, 1) Or UBound(kol, 1) <> UBound(cost, 1) Then SumFIFO = CVErr(xlErrValue): Exit Function
ReDim out(1 To UBound(kol, 1), 1 To 1)
For i = 1 To UBound(out, 1)
  If prod(i, 1) = Product Then
4 фев 18, 10:35    [21163970]     Ответить | Цитировать Сообщить модератору
 Re: convert vba to JS  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20519
тут 8, какую именно?
4 фев 18, 10:43    [21163983]     Ответить | Цитировать Сообщить модератору
 Re: convert vba to JS  [new]
sanstile
Member

Откуда:
Сообщений: 4
Shocker.Pro,

If UBound(prod, 1) <> UBound(kol, 1) Or UBound(kol, 1) <> UBound(cost, 1) Then SumFIFO = CVErr(xlErrValue): Exit Function


пока писал понял немного, вчера тормозил.

функиция(Ub.) (имя масива, измерение) <> (меньше больше) функция(имя масива, измерение) .....

Then SumFIFO = CVErr(xlErrValue): // ????????


и еще

Function SumFIFO(Products As Range, Product As String, amt As Range, price As Range)     //  зачем  в  скобках идет перечисление ??/ 
4 фев 18, 10:56    [21164011]     Ответить | Цитировать Сообщить модератору
 Re: convert vba to JS  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20519
sanstile
(меньше больше)
это оператор "не равно", в JS это "!="

sanstile
Then SumFIFO = CVErr(xlErrValue): // ????????
В VB так идет присвоение некоей виртуальной переменной, которая будет возвращена как результат функции. То есть в JS можно в этом месте завести реальную переменную, а в конце функции будет return SumFIFO

sanstile
 зачем  в  скобках идет перечисление ??
так это входые параметры функции, в JS будет то же самое
4 фев 18, 11:13    [21164043]     Ответить | Цитировать Сообщить модератору
 Re: convert vba to JS  [new]
sanstile
Member

Откуда:
Сообщений: 4
Shocker.Pro,

function Sfifo(products, product, amt, price) {      //  у  функции  есть имя  в  даном  случае  Sfifo   как  заставить ее работать в гугл  таблице 
                                                     //  как  в  Excel  = ("=ИНДЕКС(Sfifo(C$2:C3;C3;F$2:F3;G$2:G3);СЧЁТЗ(C$2:C3))")
  
  var prod, kol, cost, out, i, j, sum, sum1, pr;
  if(products.Count < 2 || amt.Count < 2 || price.Count < 2 );  //   надеюсь это верно  
return amt * price;
  .
  .
  .
  .
  .
  .
  .
  .
  .
  }
4 фев 18, 11:25    [21164055]     Ответить | Цитировать Сообщить модератору
 Re: convert vba to JS  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20519
sanstile
 как  заставить ее работать в гугл  таблице 
вот это не скажу, погуглите, как создавать UDF для гугл-таблиц
4 фев 18, 11:44    [21164063]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Office Ответить