Contestando el correo de un lector me surgió la duda de como mejorar la búsqueda de un valor dado en una matriz n x m de datos únicos.
Dada una matriz inicial de valores necesitamos, en una tabla adyacente, encontrar el valor que le correspondería a la fila en que se halle dicho valor.
Lo vemos mejor con un ejemplo, dado la siguiente matriz de datos en el rango B7:T21, esto es, de 19 columnas x 15 filas:
Pretendemos contruir una segunda tabla donde en la primera columna añadiremos, a nuestra elección, alguno de los valores de la matriz inicial de datos, y en una segunda columna deberemos, mediante una función personalizada obtener el valor de la tabla inicial que le corresponda del rango A7:A21.
Construimos entonces la función personalizada:
Ya podemos aplicar nuestra función busqueda sobre los valores de la Tabla 2:
Hemos conseguido que para un valor dado, la función creada 'busqueda', recorra la matriz definida y cuando encuentre el valor buscado, devuelva el valor que le corresponde del rango A7:A21.
En nuestro ejemplo, el valor 10.285 le corresponde el valor 3, ya que se encuentra en la tercera fila de la matriz inicial, y a esta fila le hemos asignado el valor 3.
Dada una matriz inicial de valores necesitamos, en una tabla adyacente, encontrar el valor que le correspondería a la fila en que se halle dicho valor.
Lo vemos mejor con un ejemplo, dado la siguiente matriz de datos en el rango B7:T21, esto es, de 19 columnas x 15 filas:
Pretendemos contruir una segunda tabla donde en la primera columna añadiremos, a nuestra elección, alguno de los valores de la matriz inicial de datos, y en una segunda columna deberemos, mediante una función personalizada obtener el valor de la tabla inicial que le corresponda del rango A7:A21.
Construimos entonces la función personalizada:
'función que busca un valor dado en el rango B2:T21. Function busqueda(valor) 'c recorre las columnas de la matriz, de la 2ª a la 20ª. For c = 2 To 20 ' f recorre las filas de la matriz, de la 7ª a la 21ª. For f = 7 To 21 If Cells(f, c).Value = valor Then busqueda = Cells(f, 1).Value Next f Next c End function |
Ya podemos aplicar nuestra función busqueda sobre los valores de la Tabla 2:
Hemos conseguido que para un valor dado, la función creada 'busqueda', recorra la matriz definida y cuando encuentre el valor buscado, devuelva el valor que le corresponde del rango A7:A21.
En nuestro ejemplo, el valor 10.285 le corresponde el valor 3, ya que se encuentra en la tercera fila de la matriz inicial, y a esta fila le hemos asignado el valor 3.
thanks
ResponderEliminarUNA DUDA....TENGO UNA MATRIZ EN LA QUE LA PRIMERA COLUMNA CORRESPONDE CON LOS AÑOS DE VENTA
ResponderEliminarY LAS TRES COLUMNAS SIGUIENTES CON LOCALIDADES, LOGROÑO, ZARAGOZA Y BURGOS....
EN DOS CELDAS INDEPENDIENTES TENGO QUE RELLENAR LOS DATOS DE LA LOCALIDAD Y MARCA DE COCHE, DE LAS QUE QUIERO CALCULAR EN NÚMERO DE VENTAS EN OTRA CELDA INDEPENDIENTE.
QUE FORMULA TENGO QUE PONER EN ESTA ÚLTIMA CELDA.????
Hola,
ResponderEliminarno veo claro en que columna dispones de la marca del coche, pero parece que una fórmula SUMAR.SI.CONJUNTO es lo que buscas... y si trabajas con Exccel 2003, una SUMA matricial
Puedes ver un ejemplo en
http://excelforo.blogspot.com/2010/02/sumas-condicionadas-sumarsiconjunto.html
Slds
hola,
ResponderEliminarnecesito crear un formulario que copie los valores a1,a2,a3,a4 de la hoja1 en la hoja2 y los coloque en la hoja2 en la celda que yo quiera una fila debajo de la otra.
Hola Marcos,
ResponderEliminarrealmente no se si quieres un formulario o una macro que copie de la hoja 1 (rango de celdas A1:A4) en la hoja 2 donde tu decidas...
El siguiente código copia el rango descrito y lo pega donde quieras (realiza una pregunta) de la hoja 2:
Sub macro1()
Dim strName As String
Sheets(1).Range("a1:a4").Copy
Sheets(2).Select
strName = InputBox(Prompt:="Copiar en celda de la hoja2", _
Title:="Copiar en hoja2", Default:="")
Sheets(2).Range(strName).Select
Sheets(2).Paste
End Sub
Es un código sencillo y rápido...
Slds
Necesito encontrar una formula que cuente el nu de veces que se repite un numero en una fila de 11colimnas.ejep. 1,2,4,1,2,1,1,2,4,1.y de los valores 1:5veces,2:3veces,4:2veces.
ResponderEliminarHola,
ResponderEliminarSobre el rango de 11 columnas que tienes (por ejemplo A1:K1), y sabiendo los valores que se repiten en ellos, colocados en A3(=1), A4(=2) y A5(=4), en las celdas B3, B4 y B5 introduces la fórmula CONTAR.SI(rango de datos;criterio), en el ejemplo:
=CONTAR.SI($A$1:$K$1;B3)
y arrastras hacia abajo.
Slds
Muchas gracias por la formula el resultado fue el esperdo.
ResponderEliminarPOR FAVOR NESECITO COMO HACER PARA ENCONTRAR LOS VALORES APROXIMADOS POR ENCIMA Y DEBAJO DE UN NUMERO DADO,,, YA SE QUE CON ESTA FUNCIO =INDICE(Hoja1!C6:C30;COINCIDIR(MIN(ABS(Hoja1!C6:C30-Hoja1!C34));ABS(Hoja1!C6:C30-Hoja1!C34);0)) EJEMPLO HAYO EL MAS APROXIMADO PERO LO MUESTRA SEGUN LA APXROXIMACION POR ENCIMA Y DEBAJO ,,,YO QUIERO ES QE EN UNA CELDA ME BOTE EL NUMERO ANTERIOR Y EN OTRA EL SUPERIOR,,
ResponderEliminarALGUNA INFORMACION ENVIAR AL CORREO ANDRES.NET@LIVE.COM MUCHAS GRACIAS LES AGRADESCO
ResponderEliminarHola,
ResponderEliminarhe subido un post al blog en contestación a tu pregunta:
valores superior e inferior a uno dado
Slds
Que tal, antes que nada gracias por compartir tus conocimientos, me sacaste de un gran apuro. Otro favor alguna pagina donde pueda obtener en forma completa un tutorial para programación con visual basic en excel. Mas que nada el saber la definicion de los objetos contenidos en excel, como es el cells ETC, de antemano gracias.
ResponderEliminarHola,
ResponderEliminaruff, esa es la cuestión del millón. La verdad es que la mayoría de páginas son demasiado generales y no se adentran en los contenidos específicos de Excel y sí en las instrucciones estándar del VBA.
si te soy sincero yo lo poco que he aprendido lo he sacado de mil foros y rebuscando por web o blogs en inglés, que de momento son los más completos.
Lo que si te diría para no partir de cero es que navegues por la ayuda de Excel respecto al VBA, que he de decir que es bastante completa (aunque en ocasiones muy simple), y una vez tengas más o menos claro que necesitas utilizar realices búsquedas por foros...
Slds y suerte!!
Hola, tengo una problema y me gustaría que me colaboren con esto: Pasa que trabajo con bases de datos pero estas las hago en excel, en donde existe una tabla principal con 4 columnas: Año, Número, Tipo, Sala; y todos los días tengo que comparar otra con los mismos encabezados pero con valores desordenados y, lo que necesito saber es si esos cuatro datos de la tabla principal existen exactamente en fila en la tabla que se genera diariamente, les agradezco su tiempo.
ResponderEliminarHola René,
Eliminarecha un vistazo a esta entrada del blog
http://excelforo.blogspot.com.es/2009/12/busqueda-de-diferencias-en-una-base-de.html
habla de un ejemplo parecido al tuyo (pero para encontrar diferencias).
También puedes ver esta otra que habla de datos duplicados
http://excelforo.blogspot.com.es/2010/03/elementos-duplicados-en-campos.html
En ambos se trata de localizar diferencias o coincidencias marcándolas con un Formato condicional... espero te de la idea.
Ya me contarás.
Slds
Muy buenas,
ResponderEliminarMuchisimas gracias por la explicación, me ha venido de perlas.
Pero me queda una duda. La fórmula no se actualiza automáticamente.
Me explico, si la celda que quiero buscar (A28) en tu caso, es una celda referenciada, que se puede ver modificada. No se me activa la función personalizada , la he llamado Designación, sino que tengo que entrar en la fórmula en la barra de edición y pulsar Enter.
Que comando debo meter en el editor para solucionar esto?
Muchas gracias de antemano
Hola!
Eliminardebes insertar una línea de código (preferible al principio):
Application.Volatile
esa hará que cambios produzcan la actualización del valor devuelto.
Sld cordiales
Gracias por tu pronta respuesta.
EliminarPero mi problema persiste. Copio el módulo a ver si me estoy equivocando en algo básico
Function Designacion(valor)
Application.Volatile (True)
For c = 12 To 15
For f = 34 To 74
If Cells(f, c).Value = valor Then Designacion = Cells(f, 11).Value
Next f
Next c
End Function
He probado con el comando en diferentes lugares y sigue sin aplicarse
Hola!,
Eliminarpues a mi si me funciona tu código, cuando cambio el argumento Valor (la celda o referencia) el valor devuelto cambia y obtengo el valor correspondiente.
¿Tiene el modo de Cálculo en automático???
Slds
Pues yo tengo que seguir dandole a Enter para que me lo ejecute.
ResponderEliminarPero vamos, no sabía nada de "un modo de cálculo en automático", asi que si tienes la amabilidad de explicarme donde activo esa opcion, seguramente hayas encontrado el problema :)
Hola,
Eliminarla opción de cálculo automático de la hoja de cálculo está (y normalmente está en automático) en la ficha Fórmulas > grupo Cálculo> botón desplegable Opciones para el cálculo > Automático.
Sirve para todas las funciones...
Slds
Pues si, el cálculo automático lo tengo activado, y a pesar de ello, sigo teniendo que entrar en la celda y pulsar enter para que me lo actualice.
ResponderEliminarNo se donde puede estar el error, si a ti, con mi mismo código te funciona.
:( ?¿?
Umm
Eliminara mi si me funciona, mándame el fichero a
excelforo@gmail.com
y le echo un vistazo.
Sdls cordiales
Muy buenas tardes,
ResponderEliminarCon respecto a la primera explicación para la creación de una función de búsqueda personalizada dentro de una matriz, me surge la duda siguiente:
Como sería el código de la función si la matriz sobre la que realizamos la búsqueda y obtenemos los datos, estuviese localizada dentro de un mismo excel pero en una hoja diferente en vez de en la misma hoja.
Espero haberme explicado bien y poder obtener una respuesta.
Muchas gracias de antemano
Hola Angel,
Eliminaren principio sólo habría que indicar a la UDF dónde está (en qué hoja) estamos buscando:
If Sheets("HojaBusqeuda").Cells(f, c).Value = valor Then busqueda = Sheets("HojaBusqeuda").Cells(f, 1).Value
Eso debería ser suficiente.
Slds
Hola Amigos y Fans de Excel....
ResponderEliminarAlguien me peude ayudar a hacer una formular de SUMAR.SI.CONJUNTO donde existen 2 criterios y el segundo es variable... Mi Tabla Ejemplo.
Producto Volumen Precio
A 10 $ 20
A 20 $ 15
A 30 $ 10
A 40 $ 5
Si quiero encontrar cuanto cuesta el Producto A en un volumen de 24 Pzas. El precio debe ser de $ 15
La Formula que supongo debo utilizar es SUMAR.SI.CONJUNTO, PERO no encuentro como hacer que el volumen coincida con datos dinamicos de volumen sin especificar en codigo duro un valor especifico de Mayor Que o Menor Que, utilice la formula coincidir.
Ayuda!!!
Hola hector,
Eliminarbueno yo emplearia la siguiente fórmula (depurando algún fallo).
Supongamos el rango A1:C10 con campos (Producto, Volumen y Precio), y en E1 colocamos el producto a buscar(por ejemplo A), en F1 el Volumen (por ejemplo 24) y en G1 colocamos la fórmula:
=INDICE(C2:C10;COINCIDIR(F1;SI($A$2:$A$10=E1;$B$2:$B$10;"");1))
ojo!!, ejecutándola matricialmente.
Fallará para valores inferiores a los mínimos de Volumen.. tendrías que ajustarla con condicionales...
Espero te sirva.
Slds
Hola Ismael, me gustaría que me comentaras si existe una función que realice lo siguiente:
ResponderEliminarTengo una matriz con una serie de datos desordenados y quiero buscar un determinado valor y que la función me devuelva la posición de la celda donde se encuentra.
Esto lo hago para que una vez conocida la posición, coger siempre el valor de la celda adyacente en la misma fila.
Gracias!!!
Hola !!
Eliminarcreo que te puede servir, para algo tan concreto, esta entrada
http://excelforo.blogspot.com.es/2012/10/busqueda-matricial-por-triangulacion.html
espero puedas sacar provecho de ella.
Slds cordiales
Gracias Ismael, mi problema es que necesito el valor de la celda que me sale como referencia
EliminarHola, bueno como hablabas de posición en tu comentario...
Eliminarde todas formas, si necesitas el valor, una vez tengas la DIRECCION, anídalo en una función INDIRECTO:
=INDIRECTO(DIRECCION(...))
y tendrás el valor de dicha celda.
Slds
muchas gracias!! me has sido de gran ayuda!!!
Eliminar;-)
EliminarSlds cordiales
Hola Ismael, necesito ayuda en lo siguiente.
ResponderEliminarTengo dos columnas con datos replicados, pero en una tengo màs que en la otra. Lo que necesito identificar, son los datos que faltan en la columna que tiene menos. Los datos son descriptivos de productos (texto).
Saludos y muchas gracias!!!!!
Hola Barbara,
Eliminarhay varias formas rápidas...
Una es empleando la función CONTAR.SI.
Supongamos en A1:A100 unos datos y en C1:C200 la otra columna, entonces en la columna D, celda D1 insertas la función:
=CONTAR.SI($A$1:$A$100;C1)
y arrastras hasta D200
aquellos valores devueltos con cero significa que no estaban en la lista 'pequeña'.
Ojo, por que estamos suponiendo que los contenidos son exactos!!
Slds
TE PASASTE ismael, me resulto fantastico.
EliminarMuchas gracias!!!!!!
;-)
EliminarSlds!
Hola:
ResponderEliminarSabes que tengo que llenar una planilla que tiene datos de A5 que son fechas hasta CJ esos son datos que tengo que ir sacando dependiendo de la fecha que ingrese en otra hoja y no son en un orden correlativo..
Ejemplo en la planilla que se tiene q ir llenado ingreso la fecha 19-03-2014 que es dia miercoles tiene q buscar esa fecha y llenar una columna ademas tiene que buscar toda la semana desde el dia lunes que seia el 17-03-2014 - 18-03-2014 - 19-03-2014 - 20-03-2014 - 21-03-2014 - 22-03-2014 -23-03-2014 esa es toda la semana y llenar la planilla principal y si busco el dia 27-03-2014 ese es dia jueves tiene que llenar los dia hacia atras y adelante para llenar la semana en la hoja principal...
Nose si me explico y si no es mucha la molestia te podria enviar un correo con lo que deseo..
Por favor Muchas gracias
Hola,
Eliminarsi, mejor me envías un email a
excelforo@gmail.com
con un ejemplo adjunto y detallando el problema.
Slds
Ismael gracias por responder!!
EliminarTe envie el correo!!
Graciass
Estimado Ismael,
ResponderEliminarNecesito generar una fórmula similar al buscarv, pero que tenga los siguientes argumentos: buscador(A8:F15,"Miranda","nombre"). Es decir, la macro debe analizar toda la base de datos hasta encontrar a "Miranda" y arrojar como resultado su valor equivalente de la columna "nombre".
La matriz es así:
edad sueldo nombre codigo apellido estado
34 4500 María P04 Gonzales soltero
21 2800 Raul P07 Cardenas casado
15 6000 Ricardo P02 Gutierrez casado
19 4300 Jorge P05 Miranda viudo
Agradecería mucho me puedas ayudar, yo tengo una codificación pero que necesita 4 argumentos, y en ese caso solo necesito 3. Si me pudieses ayudar, te mandaría a algún correo lo que tengo listo.
Muchas gracias!!!!
Hola Gabriela,
Eliminarsubiré al blog una entrada exponiendo una UDF que resuelva tu duda.
Saludos
Hola Ismael:
ResponderEliminarQuiero solicitar tu apoyo en la generación de una macro para extraer datos de una tabla.
Me explico:
En la primera columna hay nombres (todos diferentes);
En la primera fila hay nombres (todos diferentes);
En sus respectivas intercecciones hay valores. Hay celdas vacías.
Lo que necesito es que a partir de determinar el nombre de la columna me anote el nombre de la fila y su valor.
Tabla original
Nombres Profesional01 Profesional02 Profesional03 Profesional04
Eunice 100 100 100
Joaquín 100 100
Magda 100 50
Roberto 100 15
Ejemplo de Resultado
Nombres Profesinal04
Eunice 100
Magda 50
Roberto 15
Gracias anticipadas…
Hola,
Eliminarquizá una tabla dinámica te resuelva la cuestión sin emplear macros..
bastará que apliques un filtro o muestres el campo que quieras en ella.
También podrías aplicar una fórmula INDICE para, según un desplegable, mostrar la columna con la info que necesites...
Saludos
Gracias por tu respuesta... ya lo hice en una tabla dinámica pero me lleva mucho tiempo el preparar las impresiones por columna y valores... por eso pensé en una macro...
Eliminarestudiaré lo de INDICE para saber si me puede ayudar.
gracias...
Hola buen día a todos, tengo un problema con una macro que cree para ocultar y mostrar columnas mediente un boto ToggleButton, solo que al ejecutarla no oculta ni muestra las columnas programadas si no otras, en este caso yo le pdido a la macro ocultar las columnas ("e:g") y al ejecutarla me oculta las columnas ("b:r"), y hace lo mismo al mostrarlas, les adjunto mi archivo
ResponderEliminarPrivate Sub ToggleButton1_Click()
Application.ScreenUpdating = False
If ToggleButton1 = False Then
Columns("E:G").Select
Selection.EntireColumn.Hidden = True
Range("C4").Select
Else
Columns("E:G").Select
Selection.EntireColumn.Hidden = False
Range("c4").Select
End If
Application.ScreenUpdating = True
End Sub
Hola Mario,
Eliminar... pues veo correcta la macro, de hecho la he replicado y funciona correctamente, como se esperaría, ocultando y mostrando E:G
???
No hay nada en el código que indique una incorrección.
Siento no poder decirte más...
Hola Ismael:
ResponderEliminarElaboré la macro siguiente para ocultar solamente las celdas vacías en las columnas C y D, pero solamente me oculta las celdas C8:D11... podrías revisarla por favor...
Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
Worksheets("RESULTADO").Activate
Range("c8").Activate
Do While IsEmpty(ActiveCell)
If ActiveCell = 0 And ActiveCell.Offset(0, 1) = 0 Then
ActiveCell.Select
Selection.EntireRow.Hidden = True
End If
ActiveCell.Offset(1, 0).Activate
Loop
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Activate
Loop
Application.ScreenUpdating = True
End Sub
Edvin
Creo sería más sencillo:
EliminarSub loop1()
Application.ScreenUpdating = False
Worksheets("RESULTADO").Activate
For Each celda In Range("C8:C20")
If IsEmpty(celda) And IsEmpty(celda.Offset(0, 1)) Then
celda.EntireRow.Hidden = True
End If
Next celda
Application.ScreenUpdating = True
End Sub
Saludos
Muchísimas gracias por responder tan pronto... justo como lo necesitaba... que estés bien siempre...
Eliminar;-)
Eliminarsaludos
Hola amigo, buenas tardes.
ResponderEliminarQueria consultarte algo, he buscado y no encuentro como realizar no se una macro o por medio de formulas algo que me ayude con lo siguiente.
De un archivo .CSV me llegan unos datos (Es el espacio libre de los discos duros en varios PC, el archivo me trae el nombre del equipo, la unidad y el tamaño del espacio libre).
nombrePC1,C,30
nombrePC1,D,20
nombrePC2,C,10
nombrePC2.......
De aca hacia abajo continua con los datos de otros equipos.
Quiero pasar esto a una tabla que tengo organizada de la siguiente forma.
____________C____D____E____...
nombrePC1 | | | |
nombrePC2 | | | |
nombrePC3 | | | |
He intentado con formulas pero no encuentro la forma de decirle que me busque solo en las columnas donde la primer celda de la fila se repita, me explico como el nombre de los equipos se repite diferente cantidad de veces entonces no se como decirle busqueme el espacio libre del disco C en los espacios donde dice PC1 en la primera celda, tambien se debe tener encuenta que en la segunda columna donde estan las letras estas tambien se repiten.
No se si me hallas entendido, de antemano muchas gracias.
Hola Mauricio,
Eliminaryo probaría construyendo una tabla dinámica, llevando al área de filas el Nombre de los PC, al área de columnas la Unidad y al área de valores el espacio libre..
creo sería lo más sencillo.
Saludos
Hola Ismael, Buenas Tardes.
ResponderEliminarGracias por la respuesta, te cuento que ya pude hacer lo que necesitaba, investigue el tema de las tablas dinamicas y pude realizar lo que queria, nuevamente gracias.
Buenos días,
ResponderEliminarTengo una table con matrices de precios por destinos y metros. Necesito una funcion macro para que al introducer en la hoja inicial el destino y el tamaño del material, se ejecute la busqueda del coste en funcion del metro del product.
Me podeis ayudar?
gracias.
Hola,
Eliminarpara tal cosa no hacen falta macros... basta aplicar una combinación anidada de las funciones INDICE y COINCIDIR
Aquí tienes un ejemplo algo más elaborado de lo que tú necesitas:
http://excelforo.blogspot.com.es/2010/03/buscar-en-matrices-la-funcion-indice.html
Saludos
un favor. ¿podrias decirme como modificar el macro para que me busque el valor aproximado inmediatamente mayor al que yo le mande buscar?
ResponderEliminarGracias
Hola Alejandro,
Eliminaryo incluiría un bucle incrementando el valor buscado de uno en uno hasta dar con una coincidencia...
'función que busca un valor dado en el rango B2:T21.
Function busqueda(valor)
x = 1
Do
'c recorre las columnas de la matriz, de la 2ª a la 20ª.
For c = 2 To 10
' f recorre las filas de la matriz, de la 7ª a la 21ª.
For f = 2 To 10
If Cells(f, c).Value = valor + x Then
busqueda = Cells(f, 1).Value
Exit Function
End If
Next f
Next c
x = x + 1
Loop Until x = 10
End Function
Espero te sirva.
Saludos
HOLA NECESITO SABER QUE FUNCION USAR... POR EJEMPLO TENGO UNA COLUMNA DONDE SE ENCUENTRAN NUMEROS QUIERO HACER UNA FORMULA QUE VEA SI EL NUMERO DE TAL COLUMNA (EJP 25) ES MAYOR A 30 Y SI ES ASI ME ESCRIBA DIRECTAMENTE UN 35. NO LOGRO QUE QUEDE EL NUMERO 35. ME PODRIAN PASAR LA FORMULA COMPLETA LISTA PARA HACERLO?
ResponderEliminarGRACIASSS
Hola,
Eliminardisculpa pero no comprendo... te refieres al número de columna o los valores contenidos en un rango de una columna??
Por ejemplo, rango C1:C10 con valores 1,2,3,...,8,9,10
número de columna=3
Valores contenidos=1,2,3,...,8,9,10
??
Slds
Como hago para generar varias matrices nxn, es decir que yo ponga 2 o 5 las que quieras y que me generan 2 o 5 o las que sea matrices nxn?
ResponderEliminarHola Paula,
Eliminarqué tal estás?, un placer saludarte igualmente.
La cuestión primera sería con que valores quieres rellenar esas 2-5 matrices en tu hoja de cálculo?.. y cuales serían sus dimensiones 1x1,2x2,... 10x10.. esto es, se necesita saber a priori filas x columnas y obviamente con qué datos se completa...
Con esa información se optaría por una u otra solución
Saludos
Ola.. Ismael. Queria saber si tenia un codigo donde me recorra Campo seleccionado, q me compare dato por dato e escriba el mismo dato en otra hoja y me diga cuantas veces esta el mismo dato.
ResponderEliminarHola Miguel Angel,
Eliminarhas pensado en utilizar una sencilla tabla dinámica llevando ese campo al área de filas, y también resumido por Recuento al área de valores??
Saludos
Este comentario ha sido eliminado por el autor.
ResponderEliminarsabes necesito algo parecido lo cual seria que necesito una macro que en un rango de celdas busque los valores negativos y los extraiga en la misma fila que están pero en la columna siguiente o que se encuentra fuera de este rango.
ResponderEliminarHola, qué tal estás?
Eliminarun placer saludarte igualmente.
Prueba con un bucle sobre el rango, aplicando un condicional para cada celda de ese bucle.. y si cumple la/s condiciones, dispón el dato en la celda de al lado. Algo así:
for each celda in range("A1:A10")
if celda.value<0 then celda.offset(0,1).value=celda.value
next celda
saludos
hola tengo dos tablas una con todos los datos y otra con un segmento de estos datos, ambas con diferentes dimensiones, y quisiera saber si se pudiera generar un macro que me permita saber que valores de mi tabla general se encuentran en mi tabla parcial, es decir la segunda, saludos cordiales
ResponderEliminarHola,
Eliminarquizá solo con una función de búsqueda sea suficiente...
relaciona campos en común para cruzar registros
Yo usaría un BUSCARV o incluso un CONTAR.SI
Poco más puede comentar sin tener claro la distribución de campos
Saludos cordiales
SI, CONTAR.SI ME HA RESULTADO, MUCHAS GRACIAS
ResponderEliminarok!
Eliminar;-)
Este comentario ha sido eliminado por el autor.
ResponderEliminarBuenas noches Ismael... fijate que he copiado datos de la hoja Nomina a la hoja Resumen del libro Nomina... y el resultado ha sido satisfactorio... pero lo que necesito ahora es trasladar los datos de la hoja Nomina del libro Nomima a la hoja Resumen del Libro LibroSalarios... ayúdame a adaptar este código... por favor
ResponderEliminarSub TrasladoDatosNominaA_LibroSalarios()
Dim UltimaFilaNomina As Long
Dim UltimaFilaResumen As Long
Dim Codigo, Nombre, SalarioM, DiasL, HorasT, HorasExtrasN, HorasExtrasA, SalarioO, SalarioE, BonifIncent, TotalI, IGSS, ISR, Anticipos, Otros, TotalD, Liquido As String
Dim cont As Long
Dim Fecha As String
Fecha = "30/abril/19"
UltimaFilaNomina = Sheets("Nomina").Range("B" & Rows.Count).End(xlUp).Row
UltimaFilaResumen = Sheets("Resumen").Range("A" & Rows.Count).End(xlUp).Row
For cont = 9 To UltimaFilaNomina
Codigo = Trim(Sheets("Nomina").Cells(cont, 2))
Nombre = Trim(Sheets("Nomina").Cells(cont, 3))
SalarioM = Trim(Sheets("Nomina").Cells(cont, 4))
If Len(Codigo) > 0 And Len(Nombre) > 0 And Len(SalarioM) > 0 Then
UltimaFilaResumen = UltimaFilaResumen + 1
Sheets("Resumen").Cells(UltimaFilaResumen, 1) = Codigo
Sheets("Resumen").Cells(UltimaFilaResumen, 2) = Nombre
Sheets("Resumen").Cells(UltimaFilaResumen, 3) = Fecha
Sheets("Resumen").Cells(UltimaFilaResumen, 4) = SalarioM
End If
Next cont
MsgBox "DATOS GUARDADOS CORRECTAMENTE"
End Sub
Hola Joaquin
Eliminarnecesitas declarar el objeto del libro (quizá de todos tus libros), o al menos indicarlo en tus códigos...
Por ejemplo
UltimaFilaNomina = Workbooks("LibroNomina.xlsx").Sheets("Nomina").Range("B" & Rows.Count).End(xlUp).Row
UltimaFilaResumen = Workbooks("LibroSalarios.xlsx").Sheets("Resumen").Range("A" & Rows.Count).End(xlUp).Row
OJO, por que los libros deberán estar abiertos
Slds