Sei sulla pagina 1di 55

BUSCARV en varias hojas de Excel

Por Moiss Ortz el 26 de febrero del 2013 Generalmente recomiendo consolidar los datos en una sola hoja de Excel antes de utilizar la funcin BUSCARV, pero si por alguna razn esto no es posible y necesitas utilizar la funcin BUSCARV en varias hojas de Excel, entonces considera alguna de las alternativas que mostrar en este artculo.
Como sabemos, la funcin BUSCARV devuelve el error #N/A cuando no encuentra el valor que se est buscando, es por eso que la primer solucin propuesta es la siguiente: Utilizar la funcin BUSCARV en la primera hoja, si obtenemos un error, entonces buscar en la segunda hoja. Si volvemos a obtener un error, entonces buscamos en la tercera hoja y as sucesivamente.

La funcin SI.ERROR
Para saber si la funcin BUSCARV ha devuelto un error podemos utilizar la funcin SI.ERROR que est disponible desde la versin de Excel 2007. El primer argumento de la funcin SI.ERROR es el valor que ser evaluado y su segundo argumento es la accin a tomar en caso de obtener un error. Si deseamos realizar la bsqueda en dos hojas, entonces nuestra implementacin seguir la siguiente lgica:

Esta no es la sintaxis de la frmula, solo estoy ilustrando que el primer argumento de la funcin SI.ERROR ser la bsqueda sobre la primera hoja y como segundo argumento haremos la bsqueda sobre la segunda hoja. El segundo argumento solo ser ejecutado en caso de que la primera bsqueda resulte en error. Si en lugar de realizar la bsqueda sobre dos hojas necesitamos buscar en tres hojas, entonces necesitamos saber si la bsqueda sobre la segunda hoja nos devuelve un error y para eso volvemos a utilizar la funcin SI.ERROR lo cual nos lleva a tener una anidacin de funciones de la siguiente manera:

Ahora hagamos un ejemplo para probar que nuestra lgica de solucin propuesta funciona correctamente al buscar en varias hojas.

Funcin BUSCARV en varias hojas


En la siguiente imagen puedes observar tres tablas, cada una en hojas diferentes, que contienen una columna con el cdigo de un libro y su ttulo.

Como primer ejemplo haremos una bsqueda sobre las primeras dos tablas. En una nueva hoja realizar la bsqueda del ttulo de un libro en base a su cdigo el cual colocar en la celda B1 y para ello utilizar la siguiente frmula:
=SI.ERROR(BUSCARV(B1,Hoja1!A2:B6,2,FALSO), BUSCARV(B1,Hoja2!A2:B6,2,FALSO))

Lo ms importante a resaltar de esta frmula es el rango de bsqueda especificado en ambas funciones BUSCARV. En ambas funciones hago la referencia precisa hacia la hoja donde deseo que se realice la bsqueda. Observa el resultado obtenido al aplicar esta frmula a los datos:

Si por el contrario busco un cdigo de producto que no existe en ninguna de las primeras dos tablas, entonces obtendr como resultado el error #N/A:

Ahora consideremos en nuestra bsqueda la informacin de la tercera hoja la cual contiene ms cdigos de producto. Para ampliar nuestra bsqueda a esa tercera hoja debo utilizar de nueva cuenta la funcin SI.ERROR como parte del segundo argumento de la primera funcin SI.ERROR de la siguiente manera:
=SI.ERROR(BUSCARV(B1,Hoja1!A2:B6,2,FALSO), SI.ERROR(BUSCARV(B1,Hoja2!A2:B6,2,FALSO), BUSCARV(B1,Hoja3!A2:B6,2,FALSO)))

Con esta modificacin nuestra bsqueda se extiende a la tercera hoja y podremos saber si el cdigo de producto buscado se encuentra en ella:

Si quisiramos incluir una cuarta hoja en la bsqueda solo debemos utilizar de nueva cuenta la funcin SI.ERROR para validar los resultados de la tercera hoja y en caso de obtener un error volver a buscar en la cuarta hoja. Como sabemos, Excel 2007 y 2010 nos permiten anidar hasta 64 funciones por lo que ese sera el mximo de hojas que podramos incluir utilizando este mtodo. Sin embargo, no te recomiendo llegar hasta ese lmite ya que con solo agregar una o dos funciones anidadas ms a nuestro ejemplo la frmula incrementara su complejidad y cada vez se volvera ms difcil descubrir cualquier error. En caso de que necesites hacer bsquedas sobre una gran cantidad de hojas te recomiendo utilizar una macro ya que eso evitar la elaboracin de una frmula ms compleja.

Buscar en varias hojas con una macro

La segunda alternativa que tenemos para buscar en varias hojas de Excel es utilizar una funcin definida por el usuario. Solo debemos ejecutar la funcin VLOOKUP (BUSCARV) en cada una de las hojas del libro sobre el rango especificado: 1 2 3 Function BUSCARVMultiple(Valor_buscado As Variant, Matriz_buscar_en As Range, _ 4 Indicador_columnas As Integer, Optional Ordenado As Boolean) 5 On Error Resume Next 6 For Each Hoja In ActiveWorkbook.Worksheets 7 Matriz = Hoja.Range(Matriz_buscar_en.Address) 8 Encontrado = WorksheetFunction.VLookup _ 9 (Valor_buscado, Matriz, _ 10 Indicador_columnas, Ordenado) 11 If Not IsEmpty(Encontrado) Then Exit For 12 Next Hoja 13 Set Matriz = Nothing 14 BUSCARVMultiple = Encontrado 15 End Function 16 17 18 A continuacin har una explicacin breve de este cdigo. Los argumentos de la funcin BUSCARVMultiple son los mismos argumentos que utiliza la funcin BUSCARV comenzando por el valor buscado, la matriz de bsqueda, la columna que deseamos como resultado y finalmente el argumento ordenado. En la lnea 6 del cdigo se inicia el recorrido por cada una de las hojas del libro y en la lnea 7 obtenemos la direccin del rango sobre el cual se realizar la bsqueda. De inmediato ejecutamos la funcin VLOOKUP con los argumentos correspondientes y almacenamos el resultado en la variable Encontrado. Es importante recordar que en VBA las funciones de Excel deben ser invocadas por su nombre en ingls y por esa razn usamos la instruccin WorksheetFunction.VLookup. Finalmente en la lnea 12 validamos si la variable Encontrado tiene algn valor. Si la variable no est vaca quiere decir que la funcin VLOOKUP encontr un resultado y por lo tanto terminamos la bsqueda. De lo contrario el ciclo se vuelve a repetir y continuamos la bsqueda en la siguiente hoja del libro. En la siguiente imagen puedes observar que la funcin recin implementada nos devuelve el mismo resultado que nuestra solucin anterior la cual utilizaba funciones de Excel:

Ahora ya conoces dos posibles soluciones para aquellos casos en los que necesites utilizar la funcin BUSCARV en varias hojas de Excel. Descarga el libro de trabajo que contiene la alternativa de solucin utilizando funciones de Excel, as como la alternativa de solucin utilizando la macro y contina experimentando con el ejemplo. Artculos relacionados Funcin BUSCARV con datos de otra hoja

Combinar BUSCARV y COINCIDIR


Por Moiss Ortz el 14 de marzo del 2012
La funcin BUSCARV es de gran utilidad para buscar valores dentro de una tabla y hoy les mostrar cmo podemos mejorar la bsqueda utilizando la funcin COINCIDIR la cual nos permitir asociar una lista de validacin de datos a la funcin BUSCARV. Empezaremos por definir nuestra tabla de datos que tendr en la columna A la lista de libros de Excel que estn a la venta y los montos para cada mes en las columnas subsecuentes.

Si deseo conocer las ventas del libro Excel en 24 Horas para el mes de Marzo puedo utilizar la siguiente frmula:
=BUSCARV("Excel en 24 horas", A5:F14, 4, FALSO)

Al colocar esta frmula en la celda E1 obtengo el resultado esperado:

La frmula me da el resultado correcto, pero Qu sucede si ahora necesito las ventas del mes de Enero? Y despus las ventas del mes de Febrero?

Crear una lista de validacin


Para evitar la edicin de la funcin BUSCARV cada vez que necesitamos un dato diferente podemos crear una lista de validacin con las posibles opciones para los meses. La lista de validacin la creamos desde la ficha Datos y el botn Validacin de datos.

Para este ejemplo he colocado la lista de validacin en la celda B1. Para poder utilizar esta lista dentro de la funcin BUSCARV debo utilizar la funcin COINCIDIR la cual buscar el valor seleccionado en la lista y lo comparar con la matriz A4:F4.

Observa que he remplazado el tercer argumento de la funcin BUSCARV con la funcin COINCIDIR de la siguiente manera: COINCIDIR(B1, A4:F4, 0) . El resultado de la funcin COINCIDIR me dar el nmero de columna que corresponde al mes seleccionado en la lista de la celda B1.

ltima mejora a la funcin BUSCARV


Una pequea mejora que an podemos hacer es agregar otra lista de validacin con los nombres de los libros y utilizar dicho valor en el primer argumento de la funcin BUSCARV.

De esta manera al seleccionar un valor diferente de cualquiera de las listas obtendremos el resultado correspondiente obtenido por la funcin BUSCARV. Si lo deseas puedes descargar el libro de trabajo. Artculos relacionados La funcin BUSCARV en Excel

DinamicasTablas/ListasTipsValidacion de DatosVarios

Cmo evitar resultados #N/A en frmulas de Excel


JUEVES, FEBRERO 09, 2006

Cuando Excel no logra resolver una funcin, da como resultado #N/A (del ingls: not available). Hay situaciones en las cuales este resultado es aceptable, es decir, no hay solucin, pero no quisiramos que aparezca en la planilla. Hay varias formas de evitar que este resultado sea visible. Una de ellas ya la he mostrado en esta nota. Sencillamente seleccionamos los resultados #N/A con Ir A Especial, y borramos el contenido de las celdas seleccionados (Ctrl + Enter).

Otra forma es construir nuestra frmula de tal manera que Excel no d como resultado #N/A.

Veamos este ejemplo. Tenemos aqu dos listas, una con todos los nombres y una segunda con algunos nombres de los cuales queremos averiguar la edad

Si aplicamos la funcin BUSCARV (VLOOKUP) en nuestra frmula, obtendremos dos valores #N/A en la tabla 2

Como comentario aparte, pueden ver que he utilizado un nombre (Lista_1) para sealar el rango de bsqueda. Siempre recomiendo esta tcnica, como ya lo he hecho en esta nota. Volviendo a nuestro tema, como podemos evitar estos resultados?

A la frmula =BUSCARV(D3,Lista_1,2,0) le agregamos una condicin, tal que si el resultado esperado es #N/A, la frmula d como resultado un blanco. Rescribimos nuestra frmula de esta manera:

=SI(ESERROR(BUSCARV(D8,Lista_1,2,0))," ",BUSCARV(D8,Lista_1,2,0))

El resultado ser el siguiente

Nuestra

frmula

funciona

de

la

siguiente

manera:

La funcin SI (If en la versin inglesa) evala en primer lugar el resultado de la funcin ESERROR (IsError) cuya variable es la bsqueda que queremos realizar. Si el resultado es positivo, es decir el resultado ser #N/A, la funcin SI dar un resulta en blanco (sealado por " "). En caso contrario dar el resultado de la bsqueda BUSCARV(D8,Lista_1,2,0). Esta tcnica es til, por supuesto, en cualquier otra frmula que use funciones de Excel.

En ocasiones necesitamos eliminar en Excel aquellas filas vacas que se encuentran en nuestros listados de productos, personas, etc. Muchas veces debemos eliminar algn dato de nuestras hojas de clculo, quedando una fila vaca, la cual tenemos que buscar manualmente y eliminar manualmente algo que no ser muy cmo si se trata de listados grandes. Pues bien, este proceso lo podemos hacer de forma automtica, mediante una Macro, quien se encargara de revisar las filas que se encuentren vacas y proceder a eliminarlas. Para ello vamos a la barra de herramientas, elegimos Macro, Editor de Visual Basic.

Una vez tengamos el editor de visual abierto, vamos al men Insertar y elegimos Insertar modulo, y all pegamos el siguiente cdigo:
Sub eliminarfilavacia() For fila = 1 To 65536 If Cells(fila, 4).Value = "0" Then Rows(fila).Delete End If Next fila End Sub

Luego le damos guardar en la barra de men o presionamos las teclas Ctrl + S Ya tenemos nuestra aplicacin para que haga el trabajo por nosotros. Para ejecutar la macro o iniciar el proceso, vamos al men Herramientas, elegimos Macro, Macros. All nos aparece el listado de macros que tenemos, seleccionamos la que necesitamos y le damos Ejecutar. Otra forma de buscar las macros es presionando las teclas Alt + F8 al tiempo. Podemos tambin crear un botn que al darle Clic nos ejecute la macro. Para ello, vamos al men Ver, Barras de herramientas, Formularios. En la barra de formularios elegimos la opcin Botn, y lo colocamos en la parte de la pantalla que deseemos, y nos aparecer el listado de macros existentes. Luego seleccionamos la macro que se ejecutar al presionar el botn. Solo resta colarle un nombre al botn para identificarlo.

Actualizacin
Como est el cdigo de la macro, elimina las filas que tengan el valor 0 (cero). Para eliminar las celdas vacas el cdigo es el siguiente:
Sub eliminarfilavacia() For fila = 1 To 6000 If Cells(fila, 4).Value = "" Then Rows(fila).Delete End If Next fila End Sub

Tenga en cuenta que en la macro debe definir el rango de filas a revisar, rango que debe estar entre la primera fila ocupada hasta la ltima fila ocupada [en el ejemplo el rango va hasta la fila 6000], puesto que si de deja hasta la fila 65536 puede significar que la macro se ejecute indefinidamente y no sea posible cerrar la aplicacin ni guardar el archivo.

Pregunta: Copiar datos sin tomar filas vacias


Usuario: En un libro de Excel, de la hoja "Diario" por medio de una macro, deseo copiar el rango (Q10:R40), pegar los datos a partir de la celda (Q100), eliminando las filas vacias. Un saludo Respuesta: Buen dia amigo, por lo que pude entender esto es lo que usted necesita: contador1 = 0 contador2 = 0 For Each c In Worksheets("Diario").Range("Q10:Q40") If c.Value <> "" Then Worksheets("Diario").Cells(100 + contador2, 17).Value = Worksheets("Diario").Cells(10 + contador1, 17).Value Worksheets("Diario").Cells(100 + contador2, 18).Value = Worksheets("Diario").Cells(10 + contador1, 18).Value contador2 = contador2 + 1 End If contador1 = contador1 + 1 Next c Saludos Usuario: En primer lugar el rango indicado no es el corrector, deberia de ser (Q10:S40). lo he cambiado y no funciona, no elimina las celdas vacias y al copiar los datos en Q100, el primer dato es la suma del total, hasta ahora yo funcionaba con una macro para hacer lo mismo en el rango (A10:R40) y pegarlos en (A55) que es el siguiente y me funciona correctamente

Sub locomocion() ActiveWindow.LargeScroll Down:=-1 Selection.Autofilter Field:=1, Criterial:=">0", Operator:=xlAnd Range("A10:R40").Select Selection.Copy Range("A55").Select ActiveSheet.Paste Application.CutCopyMode=False ActiveWindow.SmallScroll Down:=-9 Selection.Autofilter Field:=1 End Sub a esta macro le cambio el rango a copiar y el de destino y no me funciona, si te es ms facil corregir esta ajustadola a los rangos ("Q10:S40") y pegarlos en Q100. Gracias por anticipado Respuesta: Amigo le voy a dar un consejo, cuando le den una posible solucion pruebela tal como se la dan sin modificarla. Su propuesta quedaria asi: Range("Q10:S40").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="<>" Range("Q10:S40").Select Selection.Copy Range("Q100").Select ActiveSheet.Paste Range("Q10:S40").Select Application.CutCopyMode = False Selection.AutoFilter Si no le funciona por favor agame llegar su archivo para ajustarlo a sus necesidades Saludos

Sabias que a travs del comando de seleccin de MS Excel Ir a Especial podemos eliminar celdas en blanco de forma ms rpida y segura, ya que esta accin en la mayora de las veces se realiza de forma manual lo que en muchos casos se hace tedioso por el volumen de los datos y hasta puede ocasionar errores.

En Practica!
Veamos a continuacin mediante un sencillo ejemplo como emplear este comando: En un conjunto de datos que inicialmente vienen ordenados en una columna que tienen celdas en blanco entre s se requiere tener los datos ordenados pero sin las celdas en blanco; una solucin a este particular es emplear el comando de seleccin Ir a Especial. El conjunto de datos inicialmente viene de la siguiente manera:

El primer paso es hacer la seleccin de todo el rango con datos y presionar la tecla F5 o el mtodo abreviado Ctrl + I en donde automticamente aparecer un cuadro de dialogo Ir a en el cual vamos a seleccionar el botn Especial:

Luego de haber hecho clic en el botn Especial aparecer un nuevo cuadro de dialogo Ir a Especial en donde vamos a seleccionar Celdas en blanco tal como se ve en la imagen anexa:

Una vez hecho la seleccin hacemos clic sobre el botn Aceptar y de inmediato las celdas en blanco ya estn seleccionadas para que puedan ser eliminadas:

Para que las celdas en blanco puedan ser eliminadas debemos usar el metodo abreviado Ctrl en donde luego aparecer un nuevo cuadro de dialogo Eliminar celdas en el cual vamos hacer clic en la opcin Desplazar las celdas hacia arriba:

Una vez seguido estos pasos el resultado que vamos a obtener es que todas las celdas en blanco del rango seleccionado ya no aparecen tal como se ve en la imagen anexa:

Este til comando nos brinda una posibilidad muy util para la eliminacin de celdas en blanco de manera efectiva sobre todo si estamos manejando grandes volmenes de datos.

Eliminar Filas y Columnas vacias

Descargar el fichero: LimpiaFilas.xlsm

s frecuente que un informe generado por otro programa se exporte a Excel, por ejemplo

en SAP. Muchos programas contemplan la exportacin directa a Excel, y en otras ocasiones lo que se hace es generar un fichero plano, de texto. Sea por un mtodo o por otro, habitualmente los informes contienen filas vacas, y columnas vacas. Presentamos una macro que elimina las filas y las columnas en blanco, dejando el informe compactado.

Hoja 1

Hoja 2
La macro que elimina las filas vacas es la siguiente.

En la macro recorremos todas las filas del rango usado (UsedRange). Se basa en detectar el nmero de celdas vacas con la funcin CountA, que en espaol se denomina CONTARA. Esta funcin es similar a la funcin CONTAR. La diferencia es que CONTAR cuenta nicamente valores numricos, y CONTARA cuenta todo tipo de celdas, sean estas numricas o de texto.

Creamos la variable Cadena que por concatenacin va acumulando todas las filas vacas que se eliminarn. Al concatenar las diferentes filas las separamos por una coma (,) lo que hace que al final tengamos que eliminar la ltima coma, cosa que se hace con la expresin: Left(Cadena, Len(Cadena) - 1).

Esta macro aplicada a hojas en las que sea necesario eliminar muchas filas puede llegar a dar un error derivado de que la variable Cadena necesita una lngitud mayor de la que es capaz de soportar. Para evitar ese inconveniente hemos creado la macro de la hoja 3 que tambin elimina las filas vacas, pero lo hace cada vez que las localiza. Cdigo:

Sub EliminarFilasVacias() Dim Cadena As String, Fila As Long With Worksheets("Hoja2") 'Nombre de la hoja For Fila = 1 To .UsedRange.Rows.Count If WorksheetFunction.CountA(.Rows(Fila)) = 0 Then Cadena = Cadena & Fila & ":" & Fila & "," End If Next Fila If Cadena <> "" Then Application.ScreenUpdating = False .Range(Left(Cadena, Len(Cadena) - 1)).Delete Application.ScreenUpdating = True End If End With End Sub

Esta macro se aplica a la Hoja2 que es la siguiente. Se lanza con un botn que hay en la parte superior izquierda de la hoja.

Hoja 3
En la Hoja3 disponemos de una macro que elimina las filas vacas y otra que elimina la columnas vacas. La macro que elimina las filas vacas es la siguiente. Es similar a la que hemos utilizado en la Hoja 2.

Cdigo:

Sub EliminarFilasEnBlanco() Dim n As Long 'n filas Dim i As Long Dim Fila As String

n = ActiveSheet.UsedRange.Rows.Count For i = n To 1 Step -1 Fila = i & ":" & i If WorksheetFunction.CountA(Range(Fila)) = 0 Then Range("A" & i).EntireRow.Delete End If Next i End Sub

Hemos necesitado hacer el bucle desde n hasta 1 ya que si lo hacemos de 1 a n en caso de existir dos o ms filas vacas contiguas quedara una de ellas sin eliminar. Para eliminar las columnas vacas existe una macro similar. Es la siguiente.

Cdigo:

Sub EliminarColumnasVacias() Dim n As Integer 'n columnas Dim i As Integer Dim col As String n = ActiveSheet.UsedRange.Columns.Count For i = n To 1 Step -1 If WorksheetFunction.CountA(Cells(1, i).EntireColumn) = 0 Then Cells(1, i).EntireColumn.Delete End If Next i End Sub

Otra variante para eliminar filas en blanco es la siguiente.

Cdigo:

Sub EliminarFilasEnBlanco_bis() Dim Fila As Long For Fila = ActiveSheet.UsedRange.Rows.Count To 1 Step -1 If WorksheetFunction.CountA(ActiveSheet.Rows(Fila)) = 0 Then Cells(Fila, 1).EntireRow.Delete End If Next Fila End Sub

Si no deseamos que se vea el movimiento en pantalla que origina la eliminacin de filas podemos aadir al inicio de la macro (despus de los Dim) la lnea:

Application.ScreenUpdating = False

Y al final de la macro pondramos la lnea:

Application.ScreenUpdating = True

Esto hace que mejore el tiempo de ejecucin, aprecindose en hojas de muchsimas filas. Pulsando sobre el desplegable de la hoja 3 podemos generar un informe con filas y columnas en blanco que podemos hacer desaparecer eligiendo las opciones adecuadas en el desplegable (ComboBox).

Otra variante que Elimina Filas Vacas


Sub Elimina_Filas_Vacias() Dim n As Long 'n filas Dim i As Long Dim Fila As String n = ActiveSheet.UsedRange.Rows.Count For i = n To 1 Step -1 Fila = i & ":" & i If WorksheetFunction.CountA(Range(Fila)) = 0 Then Range("A" & i).EntireRow.Delete End If Next i End Sub

Respuesta: Macro para copiar un rango de celdas en excel y pasar a hoja 2


Cdigo: Sub copiarypegar() 'Seleccionamos todo el rea contnua 'de datos, desde la celda donde estamos situados ActiveCell.CurrentRegion.Select 'Copiamos Selection.Copy 'Pegamos en A1 de la hoja 2 Sheets("Hoja2").Select Range("A1").Select ActiveSheet.Paste

Application.CutCopyMode = False Range("A1").Select End Sub

Respuesta: Macro para copiar un rango de celdas en excel y pasar a hoja 2

Est bueno 3pies, solo le falta la rutina para insertar en la hoja2, pero, seguido de la ultima fila(celda) ocupada Sub copiarypegar() 'Seleccionamos todo el rea contnua de datos, desde la celda donde estamos situados Range("a3:i15").Select 'seleciona el rango especifico ActiveCell.CurrentRegion.Select 'Copiamos Selection.Copy 'Pegamos en A2 de la hoja 7 Sheets(7).Select Range("A2").Select 'el control se har sobre la columna A, a partir de la fila While ActiveCell.Value <> "" 'Busca la ultima fila ActiveCell.Offset(1, 0).Select 'si la celda contiene datos, pasa a la fila siguiente Wend ActiveSheet.Paste Application.CutCopyMode = False Range("A2").Select End Sub
__________________ Las contraseas son como la ropa interior: Nunca tienes que dejarlas donde la gente pueda verlas, tienes que cambiarlas regularmente y no tienes que dejrselas a extraos

Respuesta: Macro para copiar un rango de celdas en excel y pasar a hoja 2

Sub copiarypegar() 'Seleccionamos todo el rea contnua de datos, desde la celda donde estamos situados Range("a3:i15").Select 'seleciona el rango especifico ActiveCell.CurrentRegion.Select 'Copiamos Selection.Copy 'Pegamos en A2 de la hoja 7 Sheets("NCC").Select Range("A2").Select 'el control se har sobre la columna A, a partir de la fila While ActiveCell.Value <> "" 'Busca la ultima fila ActiveCell.Offset(1, 0).Select 'si la celda contiene datos, pasa a la fila siguiente Wend ActiveSheet.Paste Application.CutCopyMode = False Range("A2").Select End Sub Existe esta opcion. Para que si alguien te cambia el nombre a las hojas o posicion de ellas, coloca esto en ThisWorkbook Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 'Esto se ejecutar justo unos instantes antes de guardar el fichero If Hoja1.Name <> "?" Then Hoja1.Name = "?" If Hoja2.Name <> "NCC" Then Hoja2.Name = "NCC" If Hoja3.Name <> "?" Then Hoja3.Name = "?" 'ect ect End Sub En lo rojo colocas el nombre de tus hojas. Esto por si alguien cambia el nombre de hojas, al cerrarse el libro todo vuelve como antes. Si sucede el cambio, el codigo referente a la hoja, no funciona.

Para evitar eso, lo mejor es en el editor de VBA, a la izquierda selecionas la hoja, abajo le das el nombre tuyo para definitivo
__________________ Las contraseas son como la ropa interior: Nunca tienes que dejarlas donde la gente pueda verlas, tienes que cambiarlas regularmente y no tienes que dejrselas a extraos

Respuesta: Macro para copiar un rango de celdas en excel y pasar a hoja 2

Y esas 41 filas quedaran entremedio de filas ocupadas? o crear 41 filas despus de la ltima ocupada? Explcate mejor y completo para que se entienda A lo mejor no soy capaz de darte ayuda por mis escasos conocimientos pero, algn usuario conocedor podr hacerlo Edito: Te consegui este codigo para un boton, tu vers si te sirve o no. Lo pondrs en un modulo y el comando para el boton es el primer, Sub InsertRowsAndFillFormulas_caller Este, si la celda selecionada contiene formula, la coservar y copiar la formula a las celdas siguientes creadas
Cita:

Sub InsertRowsAndFillFormulas_caller() Call InsertRowsAndFillFormulas End Sub Sub InsertRowsAndFillFormulas(Optional vRows As Long = 0) 'Agrega cantidad de lineas hacia abajo segun la celda seleccionada

' Documented: http://www.mvps.org/dmcritchie/excel/insrtrow.htm ' seleccin de fila basado en la celda activa Dim x As Long ActiveCell.EntireRow.Select 'Segun celda selecionada, seleciona toda la fila If vRows = 0 Then vRows = Application.InputBox(prompt:="How many rows do you want to add?", Title:="Add Rows", _ Default:=1, Type:=1) 'Por defecto presenta 1, una sola fila. Puedes decirle cuantas quieres If vRows = False Then Exit Sub End If 'si slo quiere agregar celdas y no filas enteras, elimine EntireRow "en la siguiente lnea Dim sht As Worksheet, shts() As String, i As Long ReDim shts(1 To Worksheets.Application.ActiveWorkbook.Windows(1).S electedSheets.Count) i=0 For Each sht In _ Application.ActiveWorkbook.Windows(1).SelectedShee ts Sheets(sht.Name).Select i=i+1 shts(i) = sht.Name x = Sheets(sht.Name).UsedRange.Rows.Count 'correccin ltima celda Selection.Resize(rowsize:=2).Rows(2).EntireRow.Res ize(rowsize:=vRows).Insert Shift:=xlDown Selection.AutoFill Selection.Resize(rowsize:=vRows + 1), xlFillDefault On Error Resume Next 'manejar posible error ' Agrega filas aun conservando la o las formula(s) de la(s) celda(s) celecionada Selection.Offset(1).Resize(vRows).EntireRow.Specia lCells(xlConstants).ClearContents Next sht Worksheets(shts).Select End Sub Si colocas en S. google esto, macro insertar filas en excel vers miles de opciones Puede que este te sea mas simple
Cita:

Sub Insertar_filas() ' ' Insertar el numero de filas dado por el usuario Dim a As Integer a=0 a = InputBox("Cuantas filas quieres insertar? ") While a > 0 ActiveCell.Offset(1, 0).Range("a1").Select Selection.EntireRow.Insert a=a-1 Wend End Sub
__________________ Las contraseas son como la ropa interior: Nunca tienes que dejarlas donde la gente pueda verlas, tienes que cambiarlas regularmente y no tienes que dejrselas a extraos

LA FUNCION BUSCARV Y BUSCARH

Vamos a seguir con una de las funciones ms tiles que existen de cara al control de una lista de argumentos como podran ser, por ejemplo, productos de una empresa, empleados, estudiantes, etc. BUSCARV: o SINTAXIS: =BUSCARV(CELDA,RANGO,COLUMNA) o SINTAXIS: =BUSCARH(CELDA,RANGO.COLUMNA) Es decir, buscar el valor de una celda en un rango de celdas y retornar el contenido de n columnas a su derecha. Ahora en castellano. Qu significa esto? Supongamos que tenemos un listado de productos tal que as:

Suponte que es una lista sper larga de artculos en almacn. Observa que en la parte superior hemos preparado tres celdas de distintos colores. Estas celdas servirn para nuestro propsito. En la celda C2 colocaremos la frmula: =BUSCARV (C1;A7:C15;2)

Para qu servir esta hoja? Lo que haremos ser escribir un cdigo de artculo en la celda C1 (amarilla) y Excel har que aparezca automticamente la descripcin y la cantidad disponible en las dos celdas inferiores. Este tipo de hojas va perfecto para hacer una consulta a un listado. La frmula mirar lo que hay en la celda C1, y lo buscar en el rango A7:C15. Una vez que lo encuentre, (lo encontrar en la 1 columna), mostrar lo que hay 2 columnas a su derecha (contndose ella), es decir, la descripcin del producto.

Observa detenidamente los tres argumentos que nos pide la funcin =BUSCARV, primero la celda donde estar lo que intentamos buscar (el cdigo), luego el rango donde ha de buscarlo, y por ltimo el nmero de columna que queremos mostrar. Ahora, escribiremos la frmula para la celda C3. Bsicamente es igual a la anterior, pero ahora el nmero de columna ser el 3, es decir, mostrar la cantidad: intntelo usted por favor. Ahora slo faltar comprobar las dos frmulas escribiendo cualquier cdigo de la lista de artculos en la celda C1. Ejercicio1: Imagen 01

Imagen 02

Se nos pide que cuando pongamos el ITEM del Producto salga en la Columna NOMBRE---> la descripcin del producto (ITEM PROD) buscado en las 3 clases de productos que hay. Bueno como vemos contamos con 3 Bsquedas, 2 BUSCARV y 1 BUSCARH , porque???. Bueno como vemos las clases de productos CONSERVAS Y GRANOS son verticales por ende la funcin BUSCARV y la de LACTEOS vemos que es horizontal por ende la funcin BUSCARH. PRIMERO: Nos ubicamos en la celda B2 (ver Imagen 01), y comenzamos a constituir nuestra funcin anidada con las funciones BuscarV y BuscarH. SEGUNDO: Entonces la en celda B2 tendramos algo como lo siguiente: =SI(Y(A2>=301,A2<=306),BUSCARV(A2,E3:H8,2,FALSO),SI(Y(A2>=401,A2<=406),BUSCARV(A2 ,E13:H18,2,FALSO),SI(Y(A2>=501,A2<=503),BUSCARH(A2,F22:H25,2,FALSO),"Dato no Hallado"))) Ejercicio2 En este ejercicio vamos a crear dos hojas y utilizarlas conjuntamente Artculos: esta hoja contendr un listado de artculos Factura: modelo de factura con frmulas que buscarn artculos en la anterior hoja

La primera hoja tiene la siguiente lista de artculos:

La segunda hoja tendr el siguiente aspecto:

Utilice la Funcin BUSCARV, para realizar la bsqueda de artculos y sus precios por cdigo Total = cant * precio Suma = (total) En D2 (Escribir o no) palabra CONTADO o no (opcional) Dscto = En caso de que en la celda D2 exista la palabra CONTADO, se calcula el 5% de la suma. En caso de que en D2 no est la palabra CONTADO, en la celda actual aparecer un cero. Igv = (suma dscto) * 19%

Total neto = suma dscto + Igv

Cmo copiar y pegar celdas con VBA


Por Moiss Ortz el 19 diciembre, 2012

Copiar y pegar valores en Excel es una tarea muy comn por lo que ser casi inevitable que en algn momento necesites hacer un copiado y pegado de celdas dentro de una macro. Para copiar y pegar celdas con VBA haremos uso de los mtodos Copy y PasteSpecial del objeto Range.

Copiar y pegar celdas en la misma hoja


Si los valores sern pegados dentro de la misma hoja, entonces puedes utilizar un cdigo como el siguiente:

Este cdigo copiara el contenido de la celda A1 y lo pegar en la celda B1. El argumento xlPasteAll ocasiona que se pegue todo el contenido en la celda B1incluyendo el formato de la celda y las frmulas. Finalmente la instruccin Application.CutCopyMode = False hace que Excel de por finalizada la accin de copiado y pegado.

Copiar y pegar los valores de una celda con VBA


Si en lugar de copiar todo el contenido de una celda deseas copiar solamente los valores, entonces debes hacer una pequea modificacin en el argumento del mtodo PasteSpecial de la siguiente manera:

Observa que ahora el argumento utilizado es xlPasteValues el cual ocasionar que se peguen solamente los valores de las celdas copiadas.

Copiar y pegar una fila o columna con VBA


Es posible copiar y pegar columnas con VBA si modificamos el rango indicado en el mtodo Range. Por ejemplo, para copiar la columna A en la columna B utiliza el siguiente cdigo:

Si en lugar de copiar la columna A, necesitas copiar la fila 1 y pegarla en la fila 2, entonces puedes usar el siguiente cdigo:

Copiar y pegar a otra hoja


Para pegar los valores a una hoja diferente, solamente debemos especificar la hoja destino haciendo uso del objeto Worksheets de la siguiente manera:

Ahora bien, si tanto la hoja origen como la hoja destino son diferentes a la hoja activa, entonces ser necesario indicar el nombre de la hoja tanto al momento de copiar como al momento de pegar. En el siguiente cdigo estoy suponiendo que el botn que ejecuta la macro se encuentra en la Hoja1 y copiar todo el contenido de la celda A1 de la Hoja2 hacia la celda B1 de la Hoja3:

Mtodo abreviado para copiar celdas con VBA


En todos los ejemplos anteriores he utilizado el mtodo PasteSpecial para pegar los valores en las celdas destino. Una ventaja de ese mtodo es que puedo elegir si deseo copiar el contenido completo de la celda (xlPasteAll) o solo sus valores (xlPasteValues) sin embargo existe otro mtodo alterno en caso de querer copiar siempre todo el contenido de una celda. Observa el siguiente cdigo:

Este cdigo copia todo el contenido de la celda A1 (incluyendo frmulas y formato) a la celda B1 de la misma hoja. El argumento Destination es el que nos permite especificar el rango en el cual se pegarn los valores. A continuacin puedes observar, en el mismo bloque de cdigo, diferentes ejemplos utilizando este mismo mtodo abreviado para copiar celdas con VBA:

Como has visto en los ejemplos de este artculo, el primer mtodo que utilizamos nos ofrece una gran flexibilidad a travs del mtodo PasteSpecial el cual nos permite elegir si deseamos pegar todo el contenido de una celda o solo sus valores. Pero si ests seguro de querer copiar siempre todo el contenido de las celdas, entonces el mtodo abreviado, utilizando el argumento Destination del mtodo Copy, ser suficiente para lograr nuestro objetivo. Ahora ya sabes cmo copiar y pegar celdas con VBA y solo es cuestin de que elijas el mtodo adecuado

Quitar contrasea en Hojas de Excel


Publicado enero 21, 2008 Tutos Manuales542 Comentarios Etiquetas: descubrir contrasea de excel, desproteger excel, Quitar contrasea de excel, recuperar contrasea de excel

Algo que me preguntan con frecuencia es como quitarle la contrasea a los archivos de Excel que nos hemos bajado de Internet, ya sea algn formulario, alguna hoja de trabajo, etc., podemos intentar seleccionar el contenido de la hoja y copiarla en una hoja nueva, probablemente podamos usar los datos o algunos de las funciones del libro y podamos adaptarlo a nuestras necesidades, pero en ocasiones el autor del libro quita o evita la opcin de seleccionar las celdas bloqueadas, en este caso no funciona el copiar y pegar en otra hoja.

Existen programas que nos pueden ayudar a descubrir la contrasea del libro o de la hoja, testeando cientos de combinaciones por segundo o usando la fuerza bruta, pero desgraciadamente estos programas son de paga, uno de ellos es Accent EXCEL Password Recovery otro de los mejorcitos es Excel Key. Si te gusta leer, en este blog puedes aprender sobre como hacerte de tu versin full, recuerda, si te gusta algn programa cmpralo, di no a la piratera. Vamos a ver como podemos desbloquear una hoja de Excel usando un pequeo cdigo que podemos insertar en el editor de Visual Basic:

Sub Quitar_contrasea() Dim a As Integer, b As Integer, c As Integer Dim d As Integer, e As Integer, f As Integer Dim a1 As Integer, a2 As Integer, a3 As Integer Dim a4 As Integer, a5 As Integer, a6 As Integer On Error Resume Next For a = 65 To 66: For b = 65 To 66: For c = 65 To 66 For d = 65 To 66: For e = 65 To 66: For a1 = 65 To 66 For a2 = 65 To 66: For a3 = 65 To 66: For a4 = 65 To 66 For a5 = 65 To 66: For a6 = 65 To 66: For f = 32 To 126 Contrasea = Chr(a) & Chr(b) & Chr(c) & Chr(d) & Chr(e) & Chr(a1) _ & Chr(a2) & Chr(a3) & Chr(a4) & Chr(a5) & Chr(a6) & Chr(f) ActiveSheet.Unprotect Contrasea If ActiveSheet.ProtectContents = False Then MsgBox "Enorabuena!" & vbCr & "Se ha quitado la contrasea:" & vbCr & Contrasea Exit Sub End If Next: Next: Next: Next: Next: Next Next: Next: Next: Next: Next: Next End Sub
Si no sabes como insertar el cdigo, mira el tema Convertir numeros a letras en Excel, una vez insertado deber quedar as:

Ya insertado el cdigo cierra el editor y regresa a Microsoft Excel y ve a Herramientas->Macro->Macros o con el mtodo abreviado Alt+F8, en la lista de macros selecciona Quitar contrasea y clic ejecutar:

Con suerte y dependiendo de la velocidad de tu pc vers una ventana como este pasados unos minutos.:

Lo he usado para libros creados con Excel 2003, para otras versiones desconozco si funciona.

Ocultar hojas en Excel a traves de una Macro


Deseas conocer como ocultar las hojas de un libro de Microsoft Excel que no quieres que sean vistas por motivos de seguridad? En este artculo te explicaremos como desarrollar un cdigo de Visual Basic que te permite a travs de una macro muy sencilla ocultar esas hojas que te interesa que no vean, adems que ahorras tiempo ya que a travs de la Macro es mucho mas sencillo y practico ocultar y mostrar las hojas.

Paso1: Insertar Mdulo


En un libro de Excel vas a ir a la cinta de Programador (Para el caso de Microsoft Excel 2007) donde vas a presionar en las siguinetes opciones: Grupo Cdigo y selecciona Visual Basic luego de esto va aparecer la ventana de Visual Basic en donde vas a seleccionar con el botn derecho del ratn Microsoft Excel Objetos luego seleccionas Insertar y escoge de la lista que se despliega a continuacin: Mdulo donde vas a alojar la sentencia para que el cdigo de Visual Basic pueda ejecutarse.

Paso2: Ejecutar Macro


A continuacin vas a copiar la siguiente sentencia en el Modulo 1 insertado en el paso 1 la cual va a permitir ejecutar la Macro para que se puedan ocultar y mostrar las hojas, para ejecutar esta Macro solo debes posicionarte con el cursor al inicio de cada sentencia y presionar el botn de ejecucin de la Macro (Ejecutar Sub/UserForm (F5)), el mismo procedimiento se realiza para ocultar y mostrar las hojas.

Private Sub OCULTAR()

Sheets("Hoja1").VISIBLE = xlVeryHidden

Sheets("Hoja2").VISIBLE = xlVeryHidden

With ActiveWindow

End With

End Sub

Private Sub MOSTRAR()

Sheets("Hoja1").VISIBLE = True

Sheets("Hoja2").VISIBLE = True

With ActiveWindow

End With

End Sub

Paso 3: Funcionalidad de la Macro


Vas a realizar las pruebas correspondientes para efectivamente probar la funcionalidad de la Macro, recuerda que esta Macro te permite Ocultar las hojas que desees y solo dejar visible las que lo ameriten, por ejemplo Oculta la Hoja 1 y la Hoja 2 pero deja visible la Hoja 3. No dudes en seguir visitndonos, en prximas publicaciones vamos a estar colocando ms informacin al respecto. Esperamos que este artculo sea de mxima utilidad para todos. Si te gust este artculo no olvides que en nuestra seccin de Macros en Excel puedes encontrar muchsimos ms artculos como este:

Macros para proteger o desproteger una hoja Excel


POSTED ON 20/10/2009IN MACROS, MACROS EXCEL

Deseas conocer cmo proteger o desproteger una hoja Excel a travs de macros? En este tutorial te explicaremos en tan solo cuatro pasos como crear una macro muy simple que te permitir proteger una hoja de Excel, y otra que te permitir desprotegerla, unas escasas lneas de cdigo que puede resultarte de amplia utilidad en aquellos casos donde requieres trabajar con macros mucho ms grandes que deben intervenir sobre hojas de clculo protegidas con contrasea.

Paso 1: Activar la ficha Programador.


Los comandos que se usan para editar y ejecutar macros en Excel se encuentran en el grupo Cdigo de la ficha Programador, la cual de forma predeterminada se encuentra oculta. Por ello nuestro primer paso de este tutorial para proteger o desproteger una hoja Excel ser abrir nuestro archivo y activar la ficha

Programador. Recuerda que este paso solo aplicar en caso de que no tengas activa esta ficha; si ya la tienes activa puedes ir directamente al paso siguiente. En Excel 2007 ubica la cinta de opciones de la barra de herramientas e ingresars en: Botn Inicio/ Opciones de Excel/ Ms frecuentes/ y debers seleccionar la opcin Mostrar ficha programador en la cinta de opciones. La imagen anexa te muestra cul es la opcin a seleccionar para activar esta ficha:

Paso 2: Ingresar al editor de Visual Basic y crear un nuevo Mdulo.


Nuestro segundo paso ser ingresar al Editor de Visual Basic. Para ello en la ficha Programador debers ubicar el grupo Cdigo el cual podrs identificar fcilmente por encontrarse a la izquierda, con una apariencia como la de la imagen anexa:

Una vez ubiques el grupo cdigo hars clic en el botn Visual Basic, el cul te llevar al Editor de Visual Basic. Cuando ingreses al editor ubicars a la derecha de la pantalla la ventana del Proyecto VBAProject. All debers hacer clic derecho sobre la carpeta Microsoft Excel Objetos correspondiente al libro Excel en donde desees incluir tu nueva macro para proteger y desproteger una hoja Excel. En el men desplegable que aparecer selecciona Insertar y luego Mdulo, para crear un nuevo mdulo en donde sern alojadas nuestras macros.

En la imagen anexa puedes apreciar cuales son las opciones a seleccionar para incluir un nuevo mdulo:

Paso 3: Alojar cdigo para proteger o desproteger una hoja Excel.


Nuestro siguiente paso ser copiar en el nuevo Modulo que hemos insertado el siguiente cdigo de Visual Basic. El cdigo incluye dos macros: Proteger, la cual te permitir proteger con la contrasea de tu preferencia una hoja Excel, y Desproteger, la cual te permitir desproteger cualquier hoja Excel de tu preferencia si conoces cual es la contrasea de desproteccin de la misma. En la lnea de cdigo que hace referencia al objeto Sheets debers escribir el nombre de la hoja de clculo de Excel que deseas proteger o desproteger segn la macro que edites.En el cdigo que te estamos suministrando ambas macros se encuentran trabajando sobre la Hoja1. Puedes cambiar libremente esta configuracin por la hoja de tu preferencia cambiando el tecto Hoja1 por el nombre de la hoja de clculo a proteger o desproteger cuidando de respetar las comillas. En el campo (xxxx) de ambas macros vas a colocar la contrasea de tu preferencia, recomendablemente una que puedas recordar fcilmente:
Sub PROTECCION() Sheets("Hoja1").Select ActiveSheet.Protect ("XXXX") End Sub Sub DESPROTEGER() Sheets("Hoja1").Select ActiveSheet.Unprotect ("XXXX")

End Sub

Para probar o ejecutar cualquiera de tus nuevas macros para proteger o desproteger una hoja Excel solo debes colocar el cursor al comienzo de cada cdigo y presionar el botn de ejecucin de la Macro (Ejecutar Sub/UserForm (F5)).

Para que la Macro sea ms segura debes bloquear el acceso al Editor de Visual Basic y con esto restringir el acceso. Nuestro ltimo paso de este tutorial nos mostrar como hacerlo.

Paso 4: Proteger el acceso al Editor de Visual Basic.


En el Editor de Visual Basic hars clic derecho sobre la carpeta Microsoft Excel Objetos del libro de Excel con el que trabajas para que selecciones en el men desplegable que te aparecer la opcin Propiedades de VBAProject. En la imagen anexa podrs apreciar cual es esta opcin:

Una vez seleccionada la opcin Propiedades de VBAProject te va aparecer un cuadro de dialogo en donde vas a seleccionar la pestaa Proteccin en donde marcars la opcin Bloquear proyecto para visualizacin. Debajo de esta opcin debes ingresar la contrasea de tu preferencia para tener acceso al

Editor de Visual Basic. Esta contrasea te ser solicitada la prxima vez que intentes editar el cdigo al momento de acceder al Editor de Visual Basic.

Esperamos que este tutorial te haya resultado de mxima utilidad, no dudes comentarnos si tienes alguna duda o consulta adicional. Recuerda que en nuestra categora de artculos relacionados con Macros en Excel podrs encontrar muchsima ms informacin, artculos y tutoriales.

Yo tengo una as 1) Sheets("VENTAS").Select 2)Range("B9:BT45").Select ' aqu tu rango de celdas que sera algo as Range("A3:A8").Select 3)Selection.ClearContents 4)Selection.ClearComments Donde 1. Es la hoja de la cual quiero borrar datos. 2. El rago de celdas que deseo borrar. 3. Elimino contenido 4. Elimino comentarios Espero te sea til Salu2

Recuperar Password de Hoja en Excel

Pasos a seguir: 1.- Crea un fichero nuevo de Excel (ej: Libro1.xls). 2.- Pulsa Alt y F11, para entrar en el proyecto VBA (Visual Basic para Aplicaciones). 3.- En el men de opciones, selecciona Insertar. Selecciona a continuacin Mdulo. 4.- En la parte izquierda, donde se observa el Proyecto, se habr creado una carpeta llamada Mdulos, y dentro de ella, figurar Mdulo1. 5.- Nos situaremos en la ventana de la derecha al cliquear sobre de ese Mdulo1, y copiaremos este cdigo: Cdigo:
Sub Descubrir_contrasea() Dim a As Integer, b As Integer, c As Integer Dim d As Integer, e As Integer, f As Integer Dim a1 As Integer, a2 As Integer, a3 As Integer Dim a4 As Integer, a5 As Integer, a6 As Integer On Error Resume Next For a = 65 To 66: For b = 65 To 66: For c = 65 To 66 For d = 65 To 66: For e = 65 To 66: For a1 = 65 To 66 For a2 = 65 To 66: For a3 = 65 To 66: For a4 = 65 To 66 For a5 = 65 To 66: For a6 = 65 To 66: For f = 32 To 126 Contrasea = Chr(a) & Chr(b) & Chr(c) & Chr(d) & Chr(e) & Chr(a1) _ & Chr(a2) & Chr(a3) & Chr(a4) & Chr(a5) & Chr(a6) & Chr(f) ActiveSheet.Unprotect Contrasea If ActiveSheet.ProtectContents = False Then MsgBox "Enorabuena!" & vbCr & "La contrasea es:" & vbCr & Contrasea Exit Sub End If Next: Next: Next: Next: Next: Next Next: Next: Next: Next: Next: Next End Sub

6.- A continuacin, una vez hayamos pegado ese cdigo, seleccionaremos en el men de opciones, Archivo, y a continuacin Exportar archivo. Le pondremos de nombre Descubrir_contrasea.bas (por ejemplo, aunque puede ser ota, ya que no tiene porqu tener el mismo nombre que el procedimiento cuyo cdigo aparece en el punto 5 anterior), y lo guardaremos por ejemplo, en Mis documentos.

7.- Ahora imaginemos que tenemos una hoja de clculo protegida, y que queremos descubrir su password. Para poder saber cual es su password, tendremos que acceder al proyecto (Alt+F11), e importar el mdulo (.bas) anterior. Para ello, desde el men de opciones, seleccionamos Archivo, y a continuacin Importar archivo. Buscamos la ruta donde habamos guardado el fichero del punto 6 anterior, y lo seleccionamos. Salimos ahora del proyecyo VBA, para volver a la hoja de clculo protegida. 8.- Con la hoja de clculo cuya contrasea deseamos descubrir, en primer plano (activa), seleccionamos desde Excel (no desde VBA, aunque tambin se puede hacer, pero lo haremos de la forma ms grfica y sencilla posible), en el men de opciones Herramientas. A continuacin, seleccionamos Macro y luego Macros (si quereis ahorraros eso, pulsad Alt+F8). En la lista de macros, seleccionamos el que se llama Descubrir_contrasea, y pulsamos el botn Ejecutar. 9.- En ese momento, comienza el procedimiento para obtener el password de la hoja. El proceso puede tardar desde unos cuantos segundos, hasta algo ms de un minuto (o incluso varios minutos). No os preocupeis, que el sistema no ha entrado en un bucle infinito , tan solo hay que tener un poco de paciencia. 10.- Para finalizar, el sistema nos mostrar un mensaje, dicindonos cul era el password de la hoja, a la vez que la misma se desprotege. Puede que esa contrasea no sea literalmente la que puso el autor de la hoja que hasta hace unos segundos estaba protegida, pero tanto el password original, como este nuevo que el sistema nos da, son equivalentes. Por ejemplo, si tenemos una hoja protegida con el password pepe, la podemos desproteger con ese password, o con este que es el que obtenemos al ejecutar ese macro: AAABBABBBAA/. Podeis probar que tras proteger una hoja con el password pepe, sta se puede desproteger con el password pepe (evidentemente), y tambin con el password AAABBABBBAA/.

No dices dnde debe estar el botn. Supongamos que sobre las celdas de una hoja. Para hacer el botn abre la barra de herramientas llamada Cuadro de controles. Si haces click derecho sobre la barra de men aparece una lista. Click sobre Cuadro de controles. En esa barra vers una serie de controles y uno es un pequeo botn. Si dejas el puntero del mouse sobre l aparece un cartelito de ayuda que dice Botn de comando. Click sobre l. Ahora puedes dibujar un botn sobre la hoja. Haz click sobre el un sitio cualquiera y sin soltar la tecla del mouse arrstralo sobre la hoja. Vers aparecer un rectngulo. Al soltar la tecla del mouse se transformar en tu botn. Ahora haz doble click sobre ese botn. Se abrir el editor de Visual Basic y vers algo como esto: Private Sub CommandButton1_Click() End Sub que son la cabecera y el fin de la macro que se ejecutar al pulsar el botn. En el medio se escribe el cuerpo de la macro. Debe quedarte as: Private Sub CommandButton1_Click() Worksheets("Hoja2").Select End Sub Puse Hoja2 siguiendo tu ejemplo, pero debes escribir el nombre de la hoja a la que quieres ir, siempre entre comillas. Por ejemplo: Worksheets("Mejor Respuesta").Select Cierra el editor de Visual Basic y volvers a Excel. Para cambiar el texto que aparece en el botn, seleccinalo y pulsa el botn Propiedades de la barra Cuadro de controles. Se abrir la ventana de propiedades. All vers la propiedad Caption. Cmbiala por el texto que quieras, por ejemplo Ir a Hoja2. (NO CAMBIES LA PROPIEDAD NAME) Cierra la ventana de propiedades. En el Cuadro de controles haz click sobre el cono que es una escuadra sobre una regla para salir del modo diseo. Cierra el cuadro de controles, guarda el archivo y listo. Cuando pulses el botn irs a la hoja designada. Si quieres cambiar el tamao o la posicin del botn, abre nuevamente el Cuadro de controles y pulsa el cono de la escuadra y la regla para entrar en Modo diseo. Selecciona el botn y cambia su tamao arrastrando los cuadraditos blancos de los bordes, o su posicin arrastrando el botn entero. Sal del modo diseo pulsando el cono de la escuadra y cierra el Cuadro de controles.

Sub tickets1() mio = activeworkbook.name Workbooks.Add otro = activeworkbook.name Workbooks("almacen dulces.xlsm").Activate Sheets(4).Select Range("A1:C57").Select Selection.Copy Workbooks(otro).Sheets(1).range("a1").PasteSpecial Range("E1:G57").Select Selection.Copy Workbooks(otro).Sheets(1).range("d1").PasteSpecial Range("I1:K57").Select Selection.Copy Workbooks(otro).Sheets(1).range("g1").PasteSpecial Range("m1:o57").Select Selection.Copy Workbooks(otro).Sheets(1).range("j1").PasteSpecial Range("q1:s57").Select Selection.Copy Workbooks(otro).Sheets(1).range("m1").PasteSpecial Range("u1:w57").Select Selection.Copy Workbooks(otro).Sheets(1).range("p1").PasteSpecial End Sub

paste:=xlvalues

paste:=xlvalues

paste:=xlvalues

paste:=xlvalues

paste:=xlvalues

paste:=xlvalues

FORMULA DE COPIADO DE UNA HOJA A OTRA EN MACRO EXCEL (los nombres de las hojas los dejamos como: hoja1 y hoja2) Sub copiado() sheets("hoja1").select columna = Range("b39").Value Range("b40:b80").Copy Destination:=Sheets("hoja2").Cells(1, columna) End Sub

Cmo copiar datos de Hoja1 a Hoja2 con una condicin en Excel


En el libro estoy tratando de copiar datos de Hoja1 a Hoja2 con una condicin, si de excel ((Hoja1!B2:B80 = Hoja2!A2:A80), Hoja2!D2) no estoy me recibiendo la ayuda de result.please solucionar esto. Estoy tratando de copiar de Hoja1 a Hoja2 con una condicin, si el valor en la hoja 1, columna b es igual al valor en la Hoja2 columna al valor en la columna d de la hoja 2 debe copiarse en la columna g de Hoja1
rpondre #1

Trate de hacer debug paso a paso. Lo que sucede, si cambia su frmula en:
=IF((Sheet1!B2:B3=Sheet2!A2:A3),Sheet2!D2)

? O =IF((Sheet1!B2:B3=Sheet2!A2:A3),"the same values") Tal vez no todos los valores son realmente exactamente lo mismo en las columnas a y B. O D2 no contiene lo que usted espera.
rpondre #2

Poner la siguiente frmula en la primera celda de la columna g


=IF((Sheet1!B1=Sheet2!A1), Sheet2!D1)

Copie esta celda hacia abajo tanto como necesita. Excel cambiar todas las referencias de celda para usted.
rpondre #3

Esto debe hacer lo que est despus.


= IF(Sheet1!B1 = Hoja2!A1, Hoja2!D1)

rpondre #4

= Si (exacta (Hoja1!B1, Hoja2!A1), Hoja2!D1)

La siguiente rutina va en el Editor en la Hoja1, controlando la seleccin y copiando esos datos en la hoja 2 en las ubicaciones solicitadas.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim fila As Integer fila = Target.Row Range("A" & fila & ":B" & fila).Copy Destination:=Sheets("Hoja2").Range("A1") Range("C" & fila).Copy Destination:=Sheets("Hoja2").Range("B3") Range("D" & fila).Copy Destination:=Sheets("Hoja2").Range("A3") Application.CutCopyMode = False 'si necesitas que se posicione en la hoja2 Sheets("Hoja2").Select End Sub

Macro copiar columnas rango variable


Hola Elsamatilde, llevo tiempo consultando la web de todoexpertos, y siempre que surge una duda intento resolverla a partir de alguna respuesta que encuentro en el site, aunque no siempre es evidente!... Te comento, tengo una tabla excel en hoja1 y quiero seleccionar, copiar y pegar a hoja 2 (donde tengo frmulas) columnas A, E y G, de rango variable, para entendernos, que el numero de filas varia! Aadir que las columnas A, E y G de hoja1 tienen encabezamiento y los datos empiezan en fila 8. Tambin que las columnas anteriores al copiarse en hoja 2, aparecen en las columnas A, B y C a partir de la fila 3, entendiendo que en fila 3 hay los encabezamientos. He encontrado el cdigo siguiente que he adaptado: fila=Sheets("Hoja2").Range("A65536").End(xlUp).Row+2 Selection.Copy Destination:=Sheets("Hoja2").Cells(fila,1) Pero para que funcione debo seleccionar manualmente las columnas A, E y G de Hoja1. La duda... como puedo a partir de una macro "sencilla" que seleccione, copie y pegue las columnas A, E y G en la Hoja 2?

Experto

Hola: Te dejo una rutina 'sencilla', no coloqu ningn bucle para que te sea fcil modificar si hiciera falta. La macro busca en cada col el fin de datos, pero si todas las col tendrn el mismo largo solo dej la primera lnea donde se busca 'filafin' Sub copiado() Sheets("Hoja1").Select

'col A filafin = ActiveSheet.Range("A65536").End(xlUp).Row ActiveSheet.Range("A8:A" & filafin).Copy Destination:=Sheets("Hoja2").Range("A4") 'col E filafin = ActiveSheet.Range("E65536").End(xlUp).Row ActiveSheet.Range("E8:E" & filafin).Copy Destination:=Sheets("Hoja2").Range("B4") 'col G filafin = ActiveSheet.Range("G65536").End(xlUp).Row ActiveSheet.Range("G8:G" & filafin).Copy Destination:=Sheets("Hoja2").Range("C4") End Sub

Tengo este Macro que me hicieron el favor de pasarme para copiar y pegar datos de una hoja a otra, ya anexe los botones que necesitaba y funciono a la perfecccion.
Este seria la copia de la Hoja 1 a la hoja 6 Private Sub CommandButton1_Click() Hoja1.Range("B5:E100").Copy Destination:=Hoja6.Range("B5:E100") End Sub

Potrebbero piacerti anche