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
Buen dia Gente..
Alguna Sugerencia
ya que cuando selecciono una fila en excel doy clic en el boton "enviar datos"
los manda excelente.
pero suele pasar que por equivocacion vuelvamos a seleccionar esa fila y damos clic
y lo que quiero es que ya no los envia repetidos.
Espero su Aporte.
Anexo Codigo.
Private Sub CommandButton1_Click()
Dim sql As String
Dim cn As Object
Dim rst As Object
Dim PP As Long
rowCursor = Activecell.Row
sql = "Insert Into Reporte(Cliente, Dim, Tipo, Mate, NoRodillo, Cond, HoraCromado, RA, Picos, Temp, ReversaA, ReversaT, CromadoA, CromadoT, Volts, CondA, RAB, PicosA, Celda ) " & _
"VALUES ('" & Cells(rowCursor, 1) & "', '" & Cells(rowCursor, 2) & "', '" & Cells(rowCursor, 3) & "', '" & Cells(rowCursor, 4) & "', '" & Cells(rowCursor, 5) & "', '" & Cells(rowCursor, 6) & "', '" & Cells(rowCursor, 7) & "', '" & Cells(rowCursor, 8) & "', '" & Cells(rowCursor, 9) & "', '" & Cells(rowCursor, 10) & "', '" & Cells(rowCursor, 11) & "', '" & Cells(rowCursor, 12) & "', '" & Cells(rowCursor, 13) & "', '" & Cells(rowCursor, 14) & "', '" & Cells(rowCursor, 15) & "', '" & Cells(rowCursor, 16) & "', '" & Cells(rowCursor, 17) & "', '" & Cells(rowCursor, 18) & "', '" & Cells(rowCursor, 19) & " ')"
' crea un objeto Connection
Set cn = CreateObject("ADODB.Connection")
'cn.ConnectionString = "driver={SQL Server};server=ADM\SQLEXPRESS;database=Prueba"
cn.ConnectionString = "driver={SQL Server};server=ADM\SQLEXPRESS;uid=sa;pwd=adm;database=Prueba"
If sql <> vbNullString Then
' variable para al rec de ado
' abre la conexión a la base de datos
' On Error GoTo nohayinternet
cn.Open
' crea un nuevo objeto recordset
Set rst = CreateObject("ADODB.Recordset")
' Ejecuta el sql para llenar el recordset
rst.Open sql, cn, 1, 3
' variables para los indices de las filas y columnas
C = 0
F = 0
' recorre las columnas, añade el nombre del campo al encabezado
'ProgressBar1.
' cierra y descarga las referencias
On Error Resume Next
rst.Close
cn.Close
Set cn = Nothing
Set rst = Nothing
End If
MsgBox "Insertado en la Tabla", vbInformation, "Insertado"
'exito:
End Sub