Calc, формула для знаходження індексу мінімального значення


0

У LibreOffice Calc, чи можна написати формулу, яка, враховуючи стовпець несортованих даних (див. Приклад нижче), повертає найбільший індекс мінімального значення більше нуля? Працює наступне:

{=MATCH(MIN(IF(A1:A16>0,A1:A16)),A1:A16,0)}

але він повертає індекс 11 замість 16 з даними, показаними нижче.

Histogram data

Відповіді:


1

За умови, що всі клітини містять цілі числа, ви можете змінити формулу, щоб додати дробове зміщення, щоб змістити записи. Я виявив, що наведені нижче дії працюють на моїх тестових даних (я не ввів усі ваші дані):

=MATCH(MIN(IF(A1:A16>0,A1:A16+0.9/ROW(A1:A16))),A1:A16+0.9/ROW(A1:A16),0)

Перші 10 рядків я заповнив двома 1 і знайдено друге 1, і коли я додав більше рядків, він повернув останній запис, коли я додав інший 1. Зауважте, що це скалярна функція, тому навколишніх немає {} брекети.


Введення функції, як показано, повертає значення 15, але з CTRL+SHIFT+ENTER вона повертає 16 (що я очікував). Чи можете ви пояснити, що відбувається?
ctuffli

Я скопіював ваші дані, але отримую 16. Я не бачу, як це дасть 15, якщо не було незрозуміло, включаючи нульові записи (зміна A15 перевірити), і я не знаю, в чому різниця Ctrl+Shift зробив би. Я використовую версію 1:4.4.6~rc3-0ubuntu1 на Ubuntu 15.05.
AFH

0

Щоб взяти те, що ви зробили, і повернути його, створіть a Основна функція, визначена користувачем :

Function REVERSE_ARRAY(aIn)
    If NOT IsArray(aIn) Then
        REVERSE_ARRAY = "Err:520"
        Exit Function
    End If
    Dim aOut(LBound(aIn,1) To UBound(aIn,1), _
        LBound(aIn,2) To UBound(aIn,2)) As Single
    Dim i As Integer, reverse_i As Integer
    For i = LBound(aIn,1) to UBound(aIn,1)
        reverse_i = LBound(aIn,1) + UBound(aIn,1) - i
        aOut(reverse_i, 1) = aIn(i, 1)
    Next i
    REVERSE_ARRAY = aOut()
End Function

Змініть функцію масиву, щоб він сказав:

17-MATCH(MIN(IF(A1:A16>0,A1:A16)),REVERSE_ARRAY(A1:A16),0)

У моєму тестуванні такий підхід і відповідь @ AFH дали ті самі результати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.