Índice de linha inversa em um intervalo como variável em uma fórmula

0

Eu tenho uma tabela de entradas para cada dia. A célula B (n) deve conter uma soma dos cálculos intermediários dos dias anteriores (n1 - nn), em que um dos argumentos é um delta no número de dias entre n e nx.

Por exemplo, determinada tabela

Day  A  B
1    3  0
2    5  3
3    7  11
4    8  26
5    9  49

os valores para os dias n = 4 en = 5 são calculados da seguinte forma:

B4 = A1*3 + A2*2 + A3*1 + A4*0
B5 = A1*4 + A2*3 + A3*2 + A4*1 + A5*0

Onde multiplicadores no lado direito são deltas em dias entre n e nx. Eu imagino que essa seja uma posição inversa em um intervalo.

ipos(A2,A1:A5)=3

Talvez algo como

B(n) = SUM(A1:An * ipos())

Alguma idéia de como escrever uma fórmula para isso? Obrigado.

EDIT: Obrigado pelas respostas. Talvez eu não tenha descrito o problema suficientemente. Na verdade, estou tentando calcular o pico aproximado da concentração do medicamento administrado para cada dia, com dosagem para cada dia e meia-vida do medicamento.

Day Dosage Peak
1   2,50   2,50
2   3,17   5,67
3   4,00   9,67
4   4,00   13,67
5   5,00   17,906

meia-vida (horas):

hl = 80

número de meias-vidas decorridas:

he(days_ago) = days_ago * 24 / 80

quantidade restante após a meia-vida decorrido:

q_n(dosage, he(days_ago)) = MIN(1; 1 / MAX(1; he(days_ago))^2) * dosage

E, finalmente, o pico total de concentração para o dia n:

q(n) = q_1(dosage_1, he(n-1)) + q_2(dosage_2, he(n-2)) + .. q_n(dosage_n, he(0))

Exemplo, dia n = 5:

q(5) = q_1(2,50, he(4)) + q_2(3,17, he(3)) + q_3(4,00, he(2)) + q_4(4,00, he(1)) + q_5(5,00, he(0))

q(5) = q_1(2,50, 1.2) + q_2(3,17, 0.9) + q_3(4,00, 0.6) + q_4(4,00, 0.3) + q_5(5,00, 0)

q(5) = MIN(1; 1 / MAX(1; 1.2)^2) * 2,50 + MIN(1; 1 / MAX(1; 0.9)^2) * 3,17 

    + MIN(1; 1 / MAX(1; 0.6)^2) * 4,00 + MIN(1; 1 / MAX(1; 0.3)^2) * 4,00 

    + MIN(1; 1 / MAX(1; 0)^2) * 5,00

q(5) = 0.6944 * 2,50 + 1 * 3,17 + 1 * 4,00 + 1 * 4,00 + 1 * 5,00
q(5) = 17.906
Martin
fonte

Respostas:

4

Experimente o poder das referências mistas.

= SE (ISNUMBER (C1), C1 + SUM ($ B $ 1: B1), 0)

Anote.

insira a descrição da imagem aqui

teylyn
fonte
.......... Bela abordagem! .................
Estudante de Gary
1

Esta é uma função definida pelo usuário do Visual Basic (UDF) ;

Public Function iSum(rng As Range) As Long
    Dim K As Long
    K = rng.Count - 1

    For Each r In rng
        iSum = iSum + K * r
        K = K - 1
    Next r
End Function

insira a descrição da imagem aqui

Provavelmente é possível fazer isso com SUMPRODUCT () , mas não consigo descobrir como fazer os multiplicadores.

Aluno de Gary
fonte
0
  1. Destaque suas células, incluindo os títulos das colunas
  2. Inserir tabela (verifique se você tem uma linha de cabeçalho)
  3. Mude o nome da sua tabela para "MyTable" ou algo assim. (Enquanto sua seleção está dentro da tabela, o nome da tabela deve estar na extremidade esquerda da faixa de opções Design de Ferramentas da Tabela.)
  4. Para cada célula em B, altere a fórmula para =IF(ROW()-ROW(MyTable[#Headers])=1,0,OFFSET([@B],-1,0)+SUM(OFFSET(MyTable[[#Headers],[A]],1,0,ROW()-ROW(MyTable[#Headers])-1)))

Edit: Eu deveria explicar esta fórmula. Traduzido para o inglês, diz ...

  • Se eu sou a primeira linha de dados na tabela, basta retornar 0
  • Caso contrário, retorne a célula acima de mim mais a soma dos valores em A acima de mim.
JSmart523
fonte