Eu preciso de uma coluna de números que são gerados com base na entrada de QUALQUER das células. Digamos que eu preciso que cada célula seja 50% da anterior, assim:
1000
500
250
125
Percebo que posso multiplicar com base na entrada de uma célula de entrada designada. Nesse cenário, talvez a primeira célula seja a célula de entrada e o restante será = input * 0.5
A questão é que eu gostaria de poder usar qualquer célula como entrada e TODAS as outras células serão alteradas automaticamente de acordo com as mesmas regras, mas com base nesse número. Por exemplo, tomando o exemplo acima, se eu digitar 40 no lugar de 250, a coluna resultante ficaria assim:
160
80
40
20
Isso faz sentido? Agradeço qualquer ajuda nisso!
microsoft-excel
danieljkahn
fonte
fonte
Respostas:
Sem VBA
O mais próximo possível do VBA é fornecendo a coluna de entrada e resultado.
=INDEX($A$1:$A$10, MATCH(FALSE, ISBLANK($A$1:$A$10), 0))*2^(MATCH(FALSE, ISBLANK($A$1:$A$10), 0)-ROW())
Mude
$A$1:$A$10
para o intervalo desejado e pressione Ctrl + Shift + Enter em vez de Enter ao inserir esta fórmula. Você pode preenchê-lo automaticamente.Opcional: coloque essa validação de dados no seu intervalo / coluna de entrada. Adapte o intervalo à sua necessidade, mas lembre-se dos sinais de $ . Isso fará com que o intervalo aceite apenas uma entrada.
=COUNTA($A$1:$A$3)<=1
O resultado:
Explicação
A fórmula pega o valor da primeira célula da coluna de entrada (A) que não está em branco (veja aqui ). É então multiplicado por
2 powered by the row number of first non-blank cell minus current row number
.Com VBA
Adaptado desta pergunta
Adapte seu alcance a
Set InputRange = Range("B1:B4")
Explicação
Somente a alteração de uma célula é avaliada. Somente a alteração de valor que não ocorre devido à operação de exclusão é avaliada. Somente as alterações feitas no InputRange são avaliadas.
Estabeleça o BaseValue, que é o valor da célula mais alta do intervalo. Isso é feito multiplicando o valor de entrada por 2, alimentado pela diferença entre a linha superior e a linha de destino (exemplo: se você inserir B8 e o intervalo cobrir B3: B9, multiplique por
2 power (8-3)
)Impede que eventos sejam acionados devido a essa alteração a seguir.
Altera o valor de cada célula, começando da parte superior do intervalo definido, para uma proporção do BaseValue.
fonte
=A1+2*A2+4*A3+8*A4
; B2:=A1/2+A2+2*A3+4*A4
; B3:=A1/4+A2/2+A3+2*A4
; B4:=A1/8+A2/4+A3/2+A4
. (questão tem quatro entradas)Neste exemplo, você pode usar uma célula de entrada (
C6
) junto com uma célula auxiliar (B6
), na qual é necessário colocar um índice em uma lista de valores: o valor de entrada aparecerá nessa posição de índice em uma lista.A fórmula é apenas
Observe que o valor percentual é armazenado em
E2
.Comece com
1000
a0
posição:Em seguida, mude para
40
a posição2
:Você também pode se livrar da coluna de índice, mas acho que é útil tê-la.
fonte