#excel #vba
#excel #vba
Вопрос:
У меня есть два массива — один, содержащий доход за каждый год (R), а второй, содержащий соответствующую маржу свободного денежного потока (FCF). Я хочу создать простую функцию, которая будет выводить соответствующую маржу FCF, когда доход превысит 2 миллиарда долларов.
Function YearSalesSurpassTwoBillion(R As Range, FCF As Range)
Dim i As Integer
For i = 1 To R.Columns.Count
If R(i) >= 2000 Then Exit For
Next i
YearSalesSurpassTwoBillion = FCF(i)
End Function
Комментарии:
1. это сделает простой индекс / совпадение. Действительно ли vba необходим?
2. Вероятно, это можно сделать в Excel, но я пытаюсь изучить основы VBA.
3. Здесь вы не используете массивы — вы получаете прямой доступ к диапазонам рабочих листов.
Ответ №1:
Здесь вы не используете массивы — вы получаете прямой доступ к диапазонам рабочих листов.
Если вы хотите использовать массивы:
Function YearSalesSurpassTwoBillion(R As Range, FCF As Range)
Dim i as Long, arrR, arrFCF
arrR = R.Value 'get 2-D arrays...
arrFCF = FCF.Value
For i = 1 To UBound(arrR, 2)
If arrR(1, i) >= 2000 Then
YearSalesSurpassTwoBillion = arrFCF(1, i)
Exit For
End If
Next i
End Function
Комментарии:
1. Спасибо, Тим, но не работает. Во-первых, я получил ошибку компиляции: «повторяющееся объявление в текущей области» в результате присвоения Dim i как Long, а затем как целое число. Во-вторых, массивы расположены горизонтально, поэтому я не думаю, что это работает. Я попытался изменить ваш код, чтобы он работал, например, от 1 до UBound(1, arrR) и то же самое для arrFCF(1, i), но не сработало.
2. Это делает его временным. Большое вам спасибо.