Copia la macro en cada una de las hojas II, III y IV
Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
If Target.Count > 100 Then Exit Sub
If Not Intersect(Target, Range("C:AE")) Is Nothing Then
Application.ScreenUpdating = False
Set h1 = ActiveSheet
Set h2 = Sheets("Hoja2")
h2.Cells.ClearContents
u = h1.Range("B" & Rows.Count).End(xlUp).Row
h1.Range("AH6:AH" & u).Copy
h2.Range("B1").PasteSpecial xlValues
u2 = h2.Range("B" & Rows.Count).End(xlUp).Row
With h2.Sort
.SortFields.Clear
.SortFields.Add Key:=h2.Range("B1"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.SetRange h2.Range("B1:B" & u2)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
h2.[C1] = h2.[B1]
With h2.Range("C2:C" & u2)
.FormulaR1C1 = "=IF(R[-1]C[-1]=RC[-1],R[-1]C,R[-1]C+1)"
.Value = .Value
End With
h2.Range("B1:C" & u2).RemoveDuplicates Columns:=1, Header:=xlNo
u2 = h2.Range("B" & Rows.Count).End(xlUp).Row
For i = 1 To u2
Set r = h1.Range("AH6:AH" & u)
Set b = r.Find(h2.Cells(i, "B"), lookat:=xlWhole, LookIn:=xlValues)
If Not b Is Nothing Then
celda = b.Address
Do
'detalle
h1.Cells(b.Row, "AI") = h2.Cells(i, "C")
Set b = r.FindNext(b)
Loop While Not b Is Nothing And b.Address <> celda
End If
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End If
End Sub
Sigue las Instrucciones para poner la macro en los eventos de worksheet
- Abre tu libro de excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(II BIM)
- En el panel del lado derecho copia la macro
Realiza los pasos anteriores para las hojas III BIM y IV BIM
.
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
.
Avísame cualquier duda
.