Ir para conteúdo
  • Publicidade

jsbernardo

Coordenadas X, Y da tabela

Mensagem Recomendada

Boa tarde,
Preciso de ajuda para obter o valor de "B8" e "C7", cruzando a informação da matriz onde estão o valores.
No presente caso quero procurar o valor de "C8" na matriz de dados e retornar a respectivas coordenadas para "B8" e "C7"

Anexo ficheiro com os dados.


Muito Obrigado pela ajuda

 

Coordenadas tabela.xlsx

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Bernardo.

Veja se te ajuda.

em C7 ~~~> =ÍNDICE(C11:I11;SOMARPRODUTO(COLUNA(C12:I17)*(C12:I17=C8))-2)

em B8 ~~~> =ÍNDICE(B12:B17;SOMARPRODUTO(LIN(C1:I6)*(C12:I17=C8)))

obs.
a) se a primeira fórmula retornar #NOME então substitua COLUNA por COL
b) se o valor procurado (contido em C8) estiver repetido na tabela as fórmulas retornarão erro

 

 

 


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Osvaldo,

 

Mais uma vez TOP, é isso tudo.

Só é mesmo pena dar erro se tiver valores repetidos. Não existe forma de contornar essa situação?

Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Osvaldo,

Por exemplo, se existir o numero 4, repetido duas vezes, devolvia na célula de retorno, as 2 coordenadas em X e as duas coordenadas em Y, isto se possível.

Mais uma vez muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Bernardo. Fiz uma solução via UDF, veja se atende.

Instale as duas UDFs abaixo em um módulo comum do editor de VBA.

Function CoordX()
 Application.Volatile
 Dim c As Range, frst As String
  Set c = [B11:I17].Find([C8], lookat:=xlWhole, after:=[B11])
   If Not c Is Nothing Then
    frst = c.Address
     Do
      CoordX = CoordX & Cells(11, c.Column) & ", "
      Set c = [B11:I17].Find([C8], lookat:=xlWhole, after:=c)
     Loop While c.Address <> frst
    End If
 CoordX = Left(CoordX, Len(CoordX) - 2)
End Function

 

Function CoordY()
 Application.Volatile
 Dim r As Range, frst As String
  Set r = [B11:I17].Find([C8], lookat:=xlWhole, after:=[B11])
   If Not r Is Nothing Then
    frst = r.Address
     Do
      CoordY = CoordY & Cells(r.Row, 2) & ", "
      Set r = [B11:I17].Find([C8], lookat:=xlWhole, after:=r)
     Loop While r.Address <> frst
    End If
  CoordY = Left(CoordY, Len(CoordY) - 2)
End Function

 

Em seguida coloque em C7 ~~~> =CoordX() e coloque em B8 ~~~> =CoordY()

 


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
[[Template core/front/global/guestCommentTeaser is throwing an error. This theme may be out of date. Run the support tool in the AdminCP to restore the default theme.]]

×