Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / convert vba to JS / 8 сообщений из 8, страница 1 из 1
04.02.2018, 07:09
    #39596260
sanstile
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
convert vba to JS
помогите конвертировать в JS(GAS)... чтобы скрипт работал в гугл таблицах.


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
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
...
Рейтинг: 0 / 0
04.02.2018, 10:12
    #39596269
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
convert vba to JS
sanstile,

Помочь? Или за вас сделать?
...
Рейтинг: 0 / 0
04.02.2018, 10:35
    #39596274
sanstile
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
convert vba to JS
Shocker.Pro,

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


объяснить эту строку кода
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
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
...
Рейтинг: 0 / 0
04.02.2018, 10:43
    #39596275
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
convert vba to JS
тут 8, какую именно?
...
Рейтинг: 0 / 0
04.02.2018, 10:56
    #39596276
sanstile
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
convert vba to JS
Shocker.Pro,

Код: vbnet
1.
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): // ????????


и еще

Код: vbnet
1.
Function SumFIFO(Products As Range, Product As String, amt As Range, price As Range)     //  зачем  в  скобках идет перечисление ??/ 
...
Рейтинг: 0 / 0
04.02.2018, 11:13
    #39596278
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
convert vba to JS
sanstile(меньше больше)это оператор "не равно", в JS это "!="

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

sanstile
Код: vbnet
1.
 зачем  в  скобках идет перечисление ??

так это входые параметры функции, в JS будет то же самое
...
Рейтинг: 0 / 0
04.02.2018, 11:25
    #39596279
sanstile
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
convert vba to JS
Shocker.Pro,

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
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;
  .
  .
  .
  .
  .
  .
  .
  .
  .
  }
...
Рейтинг: 0 / 0
04.02.2018, 11:44
    #39596280
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
convert vba to JS
sanstile
Код: javascript
1.
 как  заставить ее работать в гугл  таблице 

вот это не скажу, погуглите, как создавать UDF для гугл-таблиц
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / convert vba to JS / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]