Jump to content

BUSCAR ULTIMO, PENULTIMO Y ANTEPANULTIMO VALOR DE UNA FILA


hiram
Go to solution Solved by Gerson Pineda,

Recommended Posts

Hola amigos, espero puedan ayudarme. busco 3 formulas que me den el ultimo, penultmo y antepenultimo valor de una serie de celdas de una fila que contiene celdas en blanco. Ejemplo:

Ene  |  Feb  |  Mar  |  Abr  |  May  |  Jun  |  Jul  |  Ago  |  Sep  |  Oct  |  Nov  |  Dic  |

80    |  89    |          |          |  72     |  78    |         |           |  90    |   87   |           |         |

Link to comment
Share on other sites

Hace 10 horas, Gerson Pineda dijo:

Hola

Una solución es la que te adjunto

=INDICE($A$2:$L$2,,AGREGAR(14,6,COLUMNA($A$2:$L$2)/($A$2:$L$2<>""),COLUMNAS($A$2:A2)))

Desde A1 los meses, desde A2 los valores

 

Saludos 

 

Muchas gracias Gerson. esta opcion que me das solo me da el ultimo valor, para esa opcion ya tengo la solucion (=BUSCAR(MAX(A2:L2)+2,(A2:L2))) ocupo una que me de el penultimo y antepenutimo valor.

Link to comment
Share on other sites

En 9/9/2021 at 9:50 , Gerson Pineda dijo:

Claro, solo es cosa de copiar la formula hacia la derecha y listo

 

Saludos 

Amigo Gerson... me funciono perfectamente la formula pero solo en las posiciones de columna de la a2 a la L2. si me llevo esa misma formula a otras columnas me marca error de referencia.. pordias ayudarme?

Link to comment
Share on other sites

@hiram debes fijar las columnas introduciendo el símbolo $ delante de la letra de la columna.

Echa un vistazo a la siguiente publicación donde se explica cómo funcionan las referencias absolutas, relativas y mixtas.

https://ayudaexcel.com/el-uso-de-referencias-en-las-fórmulas/

Un saludo,

Link to comment
Share on other sites

Hace 8 minutos , Sergio dijo:

@hiram debes fijar las columnas introduciendo el símbolo $ delante de la letra de la columna.

Echa un vistazo a la siguiente publicación donde se explica cómo funcionan las referencias absolutas, relativas y mixtas.

https://ayudaexcel.com/el-uso-de-referencias-en-las-fórmulas/

Un saludo,

Hola Tocayo Sergio muchas gracias... Si se como anclar las clumnas y celdas, el tema es que si el mismo ejecicio me lo llevo a otra parte de la tabla ya no me funciona...

Funciona mientras esta en las columnas de la "A2 a la "L". Si el mismo ejercicio lo corro en otras columnas no funciona y no encuentro por que.


COLUMNAS DE LA "A" A LA "L". FUNCIONA CORRECTAMENTE

Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic ULTIMO PENULTIMO ANTEPENULTIMO
89   90     76   82     98   98 82 76


COLUMNAS DE LA "A" A LA "L". FUNCIONA CORRECTAMENTE

Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic ULTIMO PENULTIMO ANTEPENULTIMO
89   90     76   82     98   #¡REF! #¡REF! #¡REF!

 

 

Link to comment
Share on other sites

Hace 1 hora, Sergio dijo:

Sergio, indícame las referencias en las que tienes los datos de la tabla que da error.

 

ULTIMO:
=INDICE($R$2:$AC$2,,AGREGAR(14,6,COLUMNA($R$2:$AC$2)/($R$2:$AC$2<>""),COLUMNAS($R$2:R2)))

PENULTIMO:

=INDICE($R$2:$AC$2,,AGREGAR(14,6,COLUMNA($R$2:$AC$2)/($R$2:$AC$2<>""),COLUMNAS($R$2:S2)))

ANTEPENULTIMO:

=INDICE($R$2:$AC$2,,AGREGAR(14,6,COLUMNA($R$2:$AC$2)/($R$2:$AC$2<>""),COLUMNAS($R$2:T2)))

Link to comment
Share on other sites

Hace 1 hora, Gerson Pineda dijo:

Tu dificultad es de adaptación porque debes manejar mejor las referencias

Te sugiero leer el articulo de @Sergio

Mientras lo haces, en el argumento de columna de INDICE, escribe, 1, 2 y 3 y listo

 

Saludos!

Gracias amigos... si entreare a ver la informacion que me proporcionan... si me hace mucha falta. Saludos

Link to comment
Share on other sites

Hace 4 horas, hiram dijo:

ULTIMO:
=INDICE($R$2:$AC$2,,AGREGAR(14,6,COLUMNA($R$2:$AC$2)/($R$2:$AC$2<>""),COLUMNAS($R$2:R2)))

PENULTIMO:

=INDICE($R$2:$AC$2,,AGREGAR(14,6,COLUMNA($R$2:$AC$2)/($R$2:$AC$2<>""),COLUMNAS($R$2:S2)))

ANTEPENULTIMO:

=INDICE($R$2:$AC$2,,AGREGAR(14,6,COLUMNA($R$2:$AC$2)/($R$2:$AC$2<>""),COLUMNAS($R$2:T2)))

Complicado no?, si observas que las referencias si las movi al rango que necesita?. por alguna razon la formula INDICE me da un errro de referencia..

Link to comment
Share on other sites

                             
                               
ENE FEB MAR ABR MAY JUN JUL AGO SEP OCT NOV   ANTEPE… PENULT… ULTIMO  
                               
23 43   253 46 437 47 4 564 3 45   564 3 45  
28 48 5 258 51 442 52 9 569 8 50   569 8 50  
33 53 10 263 56 447 57 14 574 13 55   574 13 55  
38 58 15 268 61 452 62 19 579 18 60   579 18 60  
                               
                               
formulas de la fila 3     Antepenultimo   DESREF($A$1,FILA(A3)-FILA(A$1),CONTARA($A$1:$K$1)-3)  
        Penultimo     DESREF($A$1,FILA(A3)-FILA(A$1),CONTARA($A$1:$K$1)-2)  
        Ultimo     DESREF($A$1,FILA(A3)-FILA(A$1),CONTARA($A$1:$K$1)-1)  
                               
                               
Link to comment
Share on other sites

  • Crear macros Excel

  • Posts

    • Buenas noches nuevamente a los Foristas. A sugerencia de JSD  de los problemas que le planteaba sobre el formulario, abro un nuevo tema. Ofrezco disculpas porque realmente es así como debe ser. El tema es el siguiente: Tengo en este formulario otros problemas que quizás puedan ayudarme: realmente he tratado de ver dónde está el error, pero mis conocimientos no alcanzan y ustedes son los MAESTROS. 1.- En el FrmPersonal trabajo lo que es el listado de Personal con todos los datos y las Nóminas de Salario. En la parte de las nóminas (LstNomina) ya lo configuré de tal manera que con el evento DobleClick pueda traer cualquier trabajador y poder modificar algún dato que por error se haya introducido. Este trabaja Bien, pero en el LstPersonal, estoy tratando de hacer lo mismo y no me está queriendo tomar los datos para su modificación. No me da error, pero no lo hace y he buscado, pero no encuentro el posible problema. 2.- En este mismo Formulario (FrmPersonal), no acabo de poner bien el código VBA para los OptionButton de Sexo. 3.- En este Proyecto también tengo o quiero en el FrmBuscarEntradas poder modificarlo y que a través de un ComboBox o de Botones de Opción poder hacer la búsqueda no sólo de las Entradas, sino también de las Salidas y la Existencia. Esto para evitarme tener que hacer uno para cada uno y reducir los Formularios. ¿Podrías ayudarme con estos temas? Un abrazo a todos. Espero puedas ayudarme y excelente semana para todos. Un abrazo caluroso y cordial. Pino.   Mi Negocio Foro.xlsm
    • Buenas Noches a todos los Foristas. Gracias JSD por su aporte. Revisaré dónde estaba el problema para evitar el mismo error en lo adelante y aprender. Gracias a los demás miembros del Foro también. Tema cerrado.
    • Hola, Gerson. Pues es que solo se mueven todas las salidas de golpe tanto si filtras a mano como si no y todos las referencias de producto a la vez de salidas. No es el ejemplo 2.. no sé... pensaba que la pregunta era clara y tendría fácil solución. El código de mi ejemplo es super sencillo y lo he explicado paso a paso en la macro. En el ejemplo 1 funciona y en el ejemplo 2 es exactamente igual solo que los registros están filtrados.  Comienzo siempre con una salida y luego se van alternando (una entrada, una salida... hay condiciones) hasta que ya no quedan datos en las hojas. Primero para Referencia 1 (filtrada). La idea es al terminar quitar el filtro y hacer lo mismo para referencia 2 (como en el ejemplo 1 que funciona). Gracias.  
    • Hola a todos. Llevo meses empleando una macro para hacer scrapping la cual tengo que modificar dado que la web ya no admite IE. A través de tutoriales conseguí escribir un código que me permite obtener los datos, llevo varias semanas y tengo dos problemas: Primero, no consigo que la macro copie los datos de página 2 debajo de los datos de la página 1, los de la 3 debajo de las 2,..., sino que siempre copia encima de lo anterior. Segundo, copiar los datos en la hoja de excel actual (solo consigo que copie los datos si creo una nueva hoja) Este es el código inicial que funciona bien, debajo pongo a donde he llegado con Selenium. Empleo "i" para marcar el número de elementos a obtener de cada web, "i2" es el número de páginas que tiene esa sección de la tienda   Código: Sub aMonitores() Dim ie As Object Set ie = CreateObject("InternetExplorer.Application") With ie .Visible = False For i2 = 1 To 13 Worksheets("aMonitores").Select .navigate "......page=" & (i2) & "" Application.Wait (Now + TimeValue("0:00:1")) Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE Dim doc As HTMLDocument Set doc = ie.document While ie.readyState <> 4 Wend On Error Resume Next Dim i As Integer For i = 0 To 11 'product link, probably wrong class name Range("A7").Offset(i + (i2 * 12), 0).Value = doc.getElementsByClassName("ProductsListstyled__ProductContainer-a3dwak-1 kpaiIf")(0).getElementsByClassName("Linkstyled__StyledLinkRouter-sc-1drhx1h-2 hihJjl ProductListItemstyled__StyledLink-sc-16qx04k-0 dYJAjV")(i).href 'actual data Range("D7").Offset(i + (i2 * 12), 0).Value = doc.getElementsByClassName("StyledBox-sc-1vld6r2-0 bncFqw StyledFlexBox-sc-1w38xrp-4 lmlWlG")(i).innerText Next i Next i2 'tell me how many products are exhibit on the web Range("B1").Value = doc.getElementsByClassName("Cellstyled__StyledCell-sc-1wk5bje-0 NLfJA")(0).getElementsByClassName("Typostyled__StyledInfoTypo-sc-1jga2g7-0 kTxGyM")(0).innerText Range("C1").Value = doc.getElementsByClassName("Cellstyled__StyledCell-sc-1wk5bje-0 NLfJA")(0).getElementsByClassName("Typostyled__StyledInfoTypo-sc-1jga2g7-0 bfsyWw")(0).innerText 'count the data obtained Range("C2").Select ActiveCell.FormulaR1C1 = "=COUNTA(R[3]C[-2]:R[4998]C[-2])" Range("E2").Select ActiveCell.FormulaR1C1 = "=COUNTA(R[3]C[-2]:R[4998]C[-2])" Range("F2").Select ActiveCell.FormulaR1C1 = "=COUNTA(R[3]C[-2]:R[4998]C[-2])" ie.Quit Application.EnableEvents = True End With End Sub Código con Selenium:   Código: Option Explicit Private cd As Selenium.ChromeDriver Sub mm() Set cd = New Selenium.ChromeDriver Worksheets("aMonitores").Select Dim ws As Worksheet Dim i As Integer Dim i2 As Integer For i2 = 1 To 13 cd.Get ".....?page=" & (i2) & "" Dim clases As Selenium.WebElements Dim clase As Selenium.WebElement On Error Resume Next For i = 1 To 12 Set clases = cd.FindElementsByCss(".StyledBox-sc-1vld6r2-0.bncFqw.StyledFlexBox-sc-1w38xrp-4.lmlWlG") clases.Text.ToExcel ThisWorkbook.Worksheets.Add.Range("A1") Next i Next i2 cd.Close End Sub Lo he intentado con otras opcines como: - Sustituir la línea de CSS del segundo código en el primero - Escribir (i) en la línea del cd.findelementsbycss en el segundo código Y otras tantas que no logro recordar Muchas gracias por vuestro tiempo.  
  • Recently Browsing

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Privacy Policy