Automaticamente Atualizando uma célula no Excel a partir de dados de outra planilha, com base no valor de outra célula

0

Então, eu configurei um menu suspenso com uma lista de nomes em A1. O que eu quero que aconteça é que os dados na F34 mudem com base no que a A1 está lendo. Eu quero ter atualização F34 com dados de outra folha.

Os dados seriam parecidos com isto:

  • Nome 1 Corresponde aos dados da Folha2! C6
  • Nome 2 Corresponde aos dados da Folha2! C7
  • Nome 3 Corresponde aos dados da Folha2! C8
  • E assim por diante.

O que eu tentei foi algo assim. F34: =IF(A1="Name 1",Sheet2!C6), (A1="NAME 2",SHEET2!C7) E assim por diante.

Mas eu não estou chegando a lugar nenhum. Alguma idéia de como isso seria?

    
por user334607 19.06.2014 / 01:35

3 respostas

1

Como você preenche o menu suspenso? Você escreveu os nomes na caixa de diálogo ou há uma lista de nomes na pasta de trabalho em algum lugar?

Você poderia:

  • insira uma coluna na Planilha2 antes da coluna C e insira os nomes nessa coluna, para que eles estejam ao lado dos valores relacionados a eles. Estes valores estão agora na coluna D.
  • use um Vlookup para encontrar as informações relacionadas com uma fórmula como

=vlookup(A1,Sheet2!$C$6:$D$20,2,False)

Se você não puder / não quiser colocar a lista de nomes ao lado das outras informações na planilha 2, coloque a lista de nomes em qualquer lugar, digamos nas células Z1 a Z20 na planilha 1. Então você pode usar uma fórmula como

=index(Sheet2!$C$6:$c$20,match(A1,$Z$1:$Z$20,0))
    
por 19.06.2014 / 01:45
0

Você pode fazer isso no VBA por meio do evento Worksheet_SelectionChange

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
If Selection.Count = 1 Then
    If Not Intersect(Target, Range("A1")) Is Nothing Then
    // do a switch statment here, where you assign F34 value
    End If 
End If
End Sub
    
por 04.06.2015 / 15:10
0

Sua funcionalidade desejada pode ser obtida sem o VBA. Vamos construir a folha passo a passo:

Precisamos do valor da lista suspensa que será exibida em A1.     Como você já escreveu, há uma folha (eu nomeio roster ).     Aqui nós inserimos o valor para a lista suspensa e na célula logo em seguida     para o endereço desejado onde você deseja obter os dados:

  |  A     |    B      |
  +--------+-----------+
1 | Name_1 | Sheet2!C6 |
2 | Name_2 | Sheet2!C7 |
3 | Name_3 | Sheet2!C8 |

Vá para Cell A1 e defina a validade como "Permitir intervalo de células" e defina o intervalo de células como roster.$A$1:$A$3 . Agora você tem o menu suspenso.

Como próximo passo, vamos inserir o valor em Sheet2: vá para Sheet2 e digite o valor a ser recuperado (eu uso apenas alguns textos estúpidos :-))

  | A  | B  |   C   |
  +----+----+-------+
6 |    |    | Alpha |
7 |    |    | Beta  | 
8 |    |    | Gamma |

Agora, para a parte interessante: como exibir os valores dependendo da sua seleção suspensa? Usamos uma combinação de Indirect() e VLookup() :

Vá para o seu celular F34 e insira a fórmula abaixo:

=INDIRECT(VLOOKUP(A1,roster.$A$2:$B$6,2,FALSE()))

O que está acontecendo?

  • A parte interna VLookup() procura o valor de A1 no matriz onde definimos os valores válidos e os endereços para o dados, pega a segunda coluna (o addr) e a recupera. Então se você tem "Name_2" no menu suspenso, esta função retornará Sheet2!C7
  • A parte externa usa esse endereço por meio da função Indirect() para recuperar deste endereço (quem disse que o Excel não conhece Ponteiros), então você pega o texto "Beta".

Portanto, tudo o que precisamos é de uma matriz com valor válido, os endereços dos dados a serem recuperados e uma única fórmula. Espero que responda a sua pergunta, embora eu esteja um pouco atrasado para a festa, se eu olhar para o timestamp. : -)

    
por 18.08.2017 / 23:43