ayuda con macro

09/06/2006 - 17:04 por MARCO6325 | Informe spam
Buenas a todos los integrantes del foro, les agradeceria que me echaran
una manito con esta macro que me esta haciendo salir canas
verdes¡¡¡¡ les agradezco su ayudita de antemano

quiero que esta macro me compare el valor de una celda con los valores
de una columna y que me borre la fila entera si este valor esta en la
tabla 2 veces(pero que me deje una de las coincidencias), pero que me
diga "actualizado" si sólo hay una coincidencia

Sub borrafila()

Dim v As Variant
Dim i As Long


iRows = Cells(Rows.Count, "c").End(xlUp).Row ' detecta la ultima celda
en c
v = Worksheets("formato recolección datos").Range(Worksheets("formato
recolección datos").["g30"])

For i = iRows To 1 Step -1 '


If Cells(i, 4) = v Then '
Cells(i, 4).EntireRow.Delete ' borra fila
End If
Next i


End Sub

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
09/06/2006 - 23:19 | Informe spam
hola, Marco !

... una manito con esta macro que me esta haciendo salir canas verdes¡¡¡¡
... quiero que esta macro me compare el valor de una celda con los valores de una columna
y que me borre la fila entera si este valor esta en la tabla 2 veces (pero que me deje una de las coincidencias)
pero que me diga "actualizado" si solo hay una coincidencia [...]



1) creo que esta consulta viene siendo 'herencia' de la que iniciaste el dia 7 con asunto de: buscar y reemplazar -?-
solo que en esa ocasion... 'omitiste' transcribir el codigo para saber +/- 'por donde' habria que buscar soluciones :(
[supongo que no era tan 'rapida y urgente' la necesidad] :))

2) de tu segunda consulta del dia 8 [busqueda de arrays] supongo que 'hablas' de una 'plantilla' de la cual...
a) los contendios de las celdas b2, c3, g1, g3 y b8 [supongo que en ese 'orden' y que al final lo 'vacias']
b) los pasas a otra hoja en las columnas 'B' a 'F' en la siguiente 'fila libre'
c) comentas que necesitas 'validar' si ya existe ALGUNO de los datos 'originales' [b2, c3, g1, g3 y b8]
en alguno de los 'pases' anteriores para que sea REEMPLAZADO en lugar de agregado [al siguiente libre] -?-

3) podrias comentar 'que' tipo de datos/titulos/tratamiento/... contienen las celdas originales [b2, c3, g1, g3 y b8]
que luego son 'traspasadas' a las columnas 'B' a 'F'
y que posibilidades hay de que cualquiera [o incluso varios] de ellos pudieran estar en una [o varias] columnas ?
o si la busqueda debiera ser 'completa' o solo 'parcial' independientemente de en que columna se encuentre uno u otro ???
o algun dato 'clave' que pudiera estarse quedando 'en el tintero' ?

saludos,
hector.
Respuesta Responder a este mensaje
#2 MARCO6325
11/06/2006 - 17:51 | Informe spam
Héctor Miguel wrote:
hola, Marco !

> ... una manito con esta macro que me esta haciendo salir canas verdes¡¡¡¡
> ... quiero que esta macro me compare el valor de una celda con los valores de una columna
> y que me borre la fila entera si este valor esta en la tabla 2 veces (pero que me deje una de las coincidencias)
> pero que me diga "actualizado" si solo hay una coincidencia [...]

1) creo que esta consulta viene siendo 'herencia' de la que iniciaste el dia 7 con asunto de: buscar y reemplazar -?-
solo que en esa ocasion... 'omitiste' transcribir el codigo para saber +/- 'por donde' habria que buscar soluciones :(
[supongo que no era tan 'rapida y urgente' la necesidad] :))

2) de tu segunda consulta del dia 8 [busqueda de arrays] supongo que 'hablas' de una 'plantilla' de la cual...
a) los contendios de las celdas b2, c3, g1, g3 y b8 [supongo que en ese 'orden' y que al final lo 'vacias']
b) los pasas a otra hoja en las columnas 'B' a 'F' en la siguiente 'fila libre'
c) comentas que necesitas 'validar' si ya existe ALGUNO de los datos 'originales' [b2, c3, g1, g3 y b8]
en alguno de los 'pases' anteriores para que sea REEMPLAZADO en lugar de agregado [al siguiente libre] -?-

3) podrias comentar 'que' tipo de datos/titulos/tratamiento/... contienen las celdas originales [b2, c3, g1, g3 y b8]
que luego son 'traspasadas' a las columnas 'B' a 'F'
y que posibilidades hay de que cualquiera [o incluso varios] de ellos pudieran estar en una [o varias] columnas ?
o si la busqueda debiera ser 'completa' o solo 'parcial' independientemente de en que columna se encuentre uno u otro ???
o algun dato 'clave' que pudiera estarse quedando 'en el tintero' ?

saludos,
hector.





Gracias por la atención hector, ya he resuelto en algo el problema,
aqui te mando el código para que me ayudes a que sólo compare el
valor que yo introducire en la celda j11, con la columna b, y a
comparar un valor que introduzca en la celda j12 con la columna c, y
que sólo si ambos coinciden, elimine la fila por completo, claro, como
te dije anteriormente si hay 2 filas coinciden, y que si sólo
coincide 1 fila, no haga nada o diga acttualizado,
de lo q me preguntas en la parte 3 los datos son letras, es decir
palabras. y los datos a comparar som los que yo introducire en j 11 que
deberian estar en la columna b y los q introducire en j12 que deberían
estar en la columna c.

y como ultimo y disculpa la molestia, me podrias ayudar, con un código
que cuando yo cree una hoja nueva, en otra hoja se cree un
hipervínculo que nos lleva a la hoja nueva????


Sub borrafila()

Dim v As Variant
Dim i As Long


v = Worksheets("formato recolección datos").Range(Worksheets("formato
recolección datos").["j11"])


For Each Cell In Range("a15:l27") 'Aqui sustituyes!
If Cell.Value = v Then
Cell.EntireRow.Delete
End If
Next Cell
End Sub
Respuesta Responder a este mensaje
#3 Héctor Miguel
12/06/2006 - 00:21 | Informe spam
hola, Marco !

1) existen varias [y variadas] formas de eliminar filas [p.e. si se cumpen 'ciertas' condiciones'] :)
te paso una usando autofiltros para +/- 'respetar' la idea que tienes de ir 'avanzando' por las filas y eliminar [si se debe]
solo toma en cuenta que si 'avanzas' por las filas... NO 'debes' eliminarlas... hasta que termines 'el recorrido' :))
ya que al eliminar cada una... 'la siguiente'... YA NO SERA 'la que creias/esperabas/era/... [etc.] :-(

2) tambien te expongo un ejemplo de agregar hipervinculos en 'cierta' hoja al insertar hojas nuevas ;)

3) [creo que] es probable que sigan algunos 'detalles' en el tintero -?- [asi que]...

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

' == macro para eliminar si mas de dos 'repetidos' con dos condiciones -> en columnas 'B' y 'C' ...
Sub Eliminar_Mas_de_Uno()
Application.ScreenUpdating = False
Dim Celda As Range, Sig As Byte, Nuevo As Range
With ActiveSheet
If .AutoFilterMode Then .AutoFilterMode = False
With .Range(.Range("b14"), .Range("c65536").End(xlUp))
.AutoFilter Field:=1, Criteria1:=Worksheets("formato recolección datos").Range("j11")
.AutoFilter Field:=2, Criteria1:=Worksheets("formato recolección datos").Range("j12")
With .Parent.AutoFilter.Range
For Each Celda In .Offset(1).Resize(.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
Sig = Sig + 1
If Sig > 1 Then
If Nuevo Is Nothing Then Set Nuevo = Celda
Set Nuevo = Union(Nuevo, Celda)
End If
Next
End With
.AutoFilter
End With
End With
If Not Nuevo Is Nothing Then Nuevo.EntireRow.Delete: Set Nuevo = Nothing
End Sub

' == macro para insertar hojas y 'casarlas' por hipervinculo en una hoja 'base ...
Sub Agregar_hoja_e_hipervinculo()
With Worksheets("hoja0")
Worksheets.Add After:=Worksheets(Worksheets.Count)
.Hyperlinks.Add _
Anchor:=.Range("a65536").End(xlUp).Offset(1), _
Address:="", _
SubAddress:=ActiveSheet.Name & "!a1"
.Activate
End With
End Sub

__ consulta original __
... ya he resuelto en algo el problema... mando el codigo
... que solo compare el valor que yo introducire en la celda j11, con la columna b
y a comparar un valor que introduzca en la celda j12 con la columna c
y que solo si ambos coinciden, elimine la fila por completo... si... 2 filas coinciden
y que si solo coincide 1 fila, no haga nada o diga acttualizado [...]
y como ultimo... un codigo que cuando yo cree una hoja nueva, en otra hoja se cree un hipervínculo que nos lleva a la hoja nueva
Sub borrafila()
Dim v As Variant
Dim i As Long
v = Worksheets("formato recolección datos").Range(Worksheets("formato recolección datos").["j11"])
For Each Cell In Range("a15:l27") 'Aqui sustituyes!
If Cell.Value = v Then
Cell.EntireRow.Delete
End If
Next Cell
End Sub
Respuesta Responder a este mensaje
#4 MARCO6325
12/06/2006 - 05:18 | Informe spam
Héctor Miguel wrote:
hola, Marco !

1) existen varias [y variadas] formas de eliminar filas [p.e. si se cumpen 'ciertas' condiciones'] :)
te paso una usando autofiltros para +/- 'respetar' la idea que tienes de ir 'avanzando' por las filas y eliminar [si se debe]
solo toma en cuenta que si 'avanzas' por las filas... NO 'debes' eliminarlas... hasta que termines 'el recorrido' :))
ya que al eliminar cada una... 'la siguiente'... YA NO SERA 'la que creias/esperabas/era/... [etc.] :-(

2) tambien te expongo un ejemplo de agregar hipervinculos en 'cierta' hoja al insertar hojas nuevas ;)

3) [creo que] es probable que sigan algunos 'detalles' en el tintero -?- [asi que]...

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

' == macro para eliminar si mas de dos 'repetidos' con dos condiciones -> en columnas 'B' y 'C' ...
Sub Eliminar_Mas_de_Uno()
Application.ScreenUpdating = False
Dim Celda As Range, Sig As Byte, Nuevo As Range
With ActiveSheet
If .AutoFilterMode Then .AutoFilterMode = False
With .Range(.Range("b14"), .Range("c65536").End(xlUp))
.AutoFilter Field:=1, Criteria1:=Worksheets("formato recolección datos").Range("j11")
.AutoFilter Field:=2, Criteria1:=Worksheets("formato recolección datos").Range("j12")
With .Parent.AutoFilter.Range
For Each Celda In .Offset(1).Resize(.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
Sig = Sig + 1
If Sig > 1 Then
If Nuevo Is Nothing Then Set Nuevo = Celda
Set Nuevo = Union(Nuevo, Celda)
End If
Next
End With
.AutoFilter
End With
End With
If Not Nuevo Is Nothing Then Nuevo.EntireRow.Delete: Set Nuevo = Nothing
End Sub

' == macro para insertar hojas y 'casarlas' por hipervinculo en una hoja 'base ...
Sub Agregar_hoja_e_hipervinculo()
With Worksheets("hoja0")
Worksheets.Add After:=Worksheets(Worksheets.Count)
.Hyperlinks.Add _
Anchor:=.Range("a65536").End(xlUp).Offset(1), _
Address:="", _
SubAddress:=ActiveSheet.Name & "!a1"
.Activate
End With
End Sub





hola Hector miguel gracias por la rapida atenciónlos códigos no
me funcionan...te explico--
el primero me dice: error 1004 en tiempo de ejecución
no se encontraron celdas

y le doy depurar y me señala estra línea:
For Each Celda In .Offset(1).Resize(.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)

y el otro lo trate de adecuar a mi código que me adicionaba una hoja
con nombre secuencial y yo queria q me agregara el hipervínculo a la
hoja "Obras", lo agrega pero luego cuando le doy click me dice
referencia no válida, me imagino que es por el cambio de nombre pero
no se copmo resolverlo, please ayuda¡¡ te mando mi scodigo pa que lo
veas

'cambio de nombre a hoja'

For k = 1 To 1
Worksheets("Obra").Copy Before:=Worksheets("Obra")

Next k
quiero que esta hoija que estoy copiando con nombre seguido (Obra 1,
Obra 2 , etc) tengan un hipervínculo cada vez que las creo en la
página "Obras" ojo= esta pág "Obras" es diferente a la que estoy
copiando
Respuesta Responder a este mensaje
#5 Héctor Miguel
12/06/2006 - 07:57 | Informe spam
hola, Marco !

... los codigos no me funcionan... el primero me dice: error 1004 en tiempo de ejecucion. no se encontraron celdas
...le doy depurar y me se#ala estra linea:
For Each Celda In .Offset(1).Resize(.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible) [...]
... el otro lo trate de adecuar a... una hoja con nombre secuencial y... q me agregara el hipervinculo a la hoja "Obras"
lo agrega pero luego cuando le doy click me dice referencia no valida
me imagino que es por el cambio de nombre pero no se copmo resolverlo
'cambio de nombre a hoja'
For k = 1 To 1
Worksheets("Obra").Copy Before:=Worksheets("Obra")
Next k
quiero que esta hoija que estoy copiando con nombre seguido (Obra 1, Obra 2 , etc)
tengan un hipervinculo cada vez que las creo en la pagina "Obras"



1) con relacion al primer codigo... no tenia idea de que se podria dar el caso de que NO se 'dieran' AMBOS criterios de filtrado :-(
en ese caso, te paso una condicionante 'previa' para verificar que existen -al menos- 2 filas con los criterios 'aplicados' :))

2) con relacion al segundo codigo... a menos que el 'cambio de nombre' [a la hoja copiada] lo hagas 'a posteriori' [del copiado]
tambien te paso la modificacion cambiando una hoja 'nueva' agregada... por la hoja 'base' copiada ;)
de todas formas... si cambias el nombre de las hojas [despues de creados los hipervinculos]... -> volverian a fallar :-(

si cualquier duda [o informacion adicional, como 'datos en el tintero']... comentas ?
saludos,
hector.

Sub Eliminar_Mas_de_Uno()
Application.ScreenUpdating = False
Dim Celda As Range, Sig As Byte, Nuevo As Range
With ActiveSheet
If .AutoFilterMode Then .AutoFilterMode = False
With .Range(.Range("b14"), .Range("c65536").End(xlUp))
.AutoFilter Field:=1, Criteria1:=Worksheets("formato recolección datos").Range("j11")
.AutoFilter Field:=2, Criteria1:=Worksheets("formato recolección datos").Range("j12")
With .Parent.AutoFilter.Range
If (.SpecialCells(xlCellTypeVisible).Count / 2) > 2 Then
For Each Celda In .Offset(1).Resize(.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
Sig = Sig + 1
If Sig > 1 Then
If Nuevo Is Nothing Then Set Nuevo = Celda
Set Nuevo = Union(Nuevo, Celda)
End If
Next
End If
End With
.AutoFilter
End With
End With
If Not Nuevo Is Nothing Then Nuevo.EntireRow.Delete: Set Nuevo = Nothing
End Sub

Sub Agregar_hoja_e_hipervinculo()
Worksheets("obra").Copy Before:=Worksheets("obra")
With Worksheets("obras")
.Hyperlinks.Add _
Anchor:=.Range("a65536").End(xlUp).Offset(1), _
Address:="", _
SubAddress:=ActiveSheet.Name & "!a1"
.Activate
End With
End Sub
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida