Así lo he hecho, he aceptado la segunda columna de anotación y he añadido una macro:
Private Sub Worksheet_Calculate()
Dim f As Long
Dim disparar As Boolean
' Si ya se disparó una vez, salimos
If Me.Range("XX2").Value <> "" Then Exit Sub
' Comprobamos si alguna W llegó a 2
For f = 2 To 6
If Me.Cells(f, "W").Value = 2 Then
disparar = True
Exit For
End If
Next f
' Si ninguna llegó a 2, no hacemos nada
If disparar = False Then Exit Sub
' Guardamos TODO el rango como base
For f = 2 To 6
Me.Cells(f, "XX").Value = Me.Cells(f, "W").Value
' Fórmula en Y restando su base
Me.Cells(f, "Y").FormulaLocal = _
"=CONTAR.SI.CONJUNTO(Datos!B:B;$V$1;Datos!D:D;$V" & f & ")" & _
"-CONTAR.SI.CONJUNTO(Datos!B:B;$V$1;Datos!E:E;$V" & f & ")" & _
"-XX" & f
Next f
End Sub
No es la opción más bonita porque sigue contando los objetos en la columna W, pero la función me resulta suficiente para poder llevar la cuenta.
Tendré que hacer una pequeña macro para cada jugadora, son 14, pero espero no tener problemas
Por
Maku, · publicado
Estoy intentando que una macro se active en una fecha determinada cada año pero no consigo completar le parte que resalto en rojo.
Sub DESCATALOGAR()
Call CONEXIONBBDD
Dim sqlX As String
Set rstX = New ADODB.Recordset
Dim sqlY As String
Set rstY = New ADODB.Recordset
'Dim curso As Date
If Day(Date) = 9 And Month(Date) = 9 Then
'On Error Resume Next
sqlX = "UPDATE LIBROS SET LIBROS.Descatalogado = True;"
With rstX
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Open sqlX, cnn, , , adCmdText
End With
' curso = Year(Date) & "/" & Right(Year(Date) + 1, 2)
sqlY = "UPDATE LIBROS SET LIBROS.Descatalogado = False WHERE (((LIBROS.Ciclo)='" & User_FechaF.Text_Fecha & "'));"
With rstY
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Open sqlY, cnn, , , adCmdText
End With
End If
Set rstX = Nothing
Set rstY = Nothing
End Sub
Alguien me puede echar una mano por favor.