2016-11-25 7 views
1

Я пытаюсь написать какой-то код, но я столкнулся с неожиданной проблемой и надеялся, что кто-то здесь может помочь.VBA - Как вернуть одно значение из массива с помощью SUMIFS?

В основном у меня есть набор данных (около 150 тыс. Строк) и они использовали VBA для чтения их в массив. Теперь я хочу применить функцию SUMIFS для этого массива, однако я продолжаю получать возвращаемый массив, а не одно значение. Я использую что-то вдоль линий:

With Application 
    OutputArray(1, 1) = .SumIfs(.Index(MyArray, 0, 1), .Index(MyArray, 0, 2), ">0") 
End With 

Теперь я могу использовать .sum таким образом и получить одно значение. При применении той же самой функции .SumIfs, которая используется в VBA непосредственно на листе, я также получаю одно значение, но в коде VBA все, что я получаю, является массивом типа Error.

Суммарная суммарная суммарная сумма. Выходной массив - это вариант.

Если у меня отсутствует какая-либо дополнительная информация, пожалуйста, дайте мне знать.

+0

'.Index' возвращает одно значение, но' .SumIfs' ожидает Если вы можете, попробуйте это как Формула Excel и опубликуйте его, чтобы я мог лучше понять, что он должен делать. – Slai

+0

На самом деле, если поставить аргумент 0 для строки или столбца, он будет использовать весь диапазон и, как таковой, отлично работает. Я упомянул выше. Я выполнил тот же запрос, что и работала с формулой excel. Это формула: = SUMIFS (INDEX (A2: G154794,0,6), INDEX (A2, G154794,0,4), "31 ") – Glanyx

+0

Интересно .. в Google Таблицах' = INDEX ({1,2; 3,4}, 0,2) 'приводит к' {2; 4} ', но у меня нет Excel дома, чтобы его проверить Можете ли вы рассказать мне, что такое тип возврата 'test = Application.Index (MyArray, 0, 1)' из [Locals] (http: // stackoverflo w.com/documentation/excel-vba/861/debugging-and-troubleshooting/8020/debugger-locals-window#t=201611251509367841724) окно? – Slai

ответ

0

Можете ли вы загрузить образец данных, к которым вы пытаетесь применить Sumifs? И вы определили размер Outputarray сначала с помощью Redim? ... вы попробовали обернуть .Sumifs (.... с .Sum?

+0

Привет, Ник, я не могу предоставить данные, к сожалению. Размеры для выходного массива определены, да. – Glanyx

+0

Я также попробовал обернуть его с помощью .Sum, однако он просто суммирует ошибку, и я просто получаю Error в результате. – Glanyx

+0

Хорошо, вы абсолютно уверены, что данные, которые вы пытаетесь суммировать, - это числовые значения? Если это не так, вы получите эту ошибку. Некоторые номера могут быть сохранены как текст, поэтому попробуйте использовать функцию 'ISTEXT()' в новом столбце для проверки. Он возвращает True или false. – Nick

Смежные вопросы