Necesito que al colocar "x" en una celda tome el valor de otra pero que siga mostrando "x"

Al colocar en una celda "x" la misma tome el valor numérico de otra celda para luego al final poder sumar todas las que tengan "x" con sus valores respectivos.

Sería importante que en la celda donde se coloque la "x" no contenga fórmula ya que a esa celda tendrán acceso distintos usuarios y podrían modificarla accidentalmente. A la celda que sumará las respectivas "x" voy a protegerla.

1 respuesta

Respuesta
1

H o l a:

No puedes tener una "x" y un valor en la misma celda.

Lo que puedes hacer es personalizar el formato de la celda, por ejemplo la celda "C3", entra al Menú Inicio, Formato, Formato de celda, Personalizar, y en Tipo escribe entre comillas una "x" :

Ahora, si escribes un número, por ejemplo 10 (diez), en la celda C3 podrás ver que se muestra una "x", pero la celda no tiene una "x", lo que tiene la celda es un 10 (diez).

Entonces cundo sumes simplemente suma las celdas, ya que el contenido de las celdas son número y no "x".


Ahora continuando con tu petición, si escribes una "x" en la celda C3, voy a reemplazar con una macro esa "x" por el valor de otra celda, por el valor de la celda D5, en la celda C3 seguirás viendo una "x", pero realmente contendrá un valor. ¿De acuerdo?

Pon la siguiente macro en los eventos de tu hoja:

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("C3")) Is Nothing Then
        If Target = "x" Then
            Application.EnableEvents = False
            ActiveSheet.Unprotect "abc"
            Target = [D5]
            ActiveSheet.Protect "abc"
            Application.EnableEvents = True
        End If
    End If
End Sub

Cambia en la macro "abc" por el password que desees.


Te voy a enviar más información con el archivo vía mail así puedo ser más claro.

Saludos

Te anexo la macro

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 1 Then Exit Sub
    If Target.Row < 6 Then Exit Sub
    If Cells(Target.Row, "B") = "TOTALES" Then Exit Sub
    If UCase(Target.Value) <> "X" Then Exit Sub
    If Not Intersect(Target, Range("N:N, P:R")) Is Nothing Then
        Target.Value = Cells(Target.Row, "K")
    End If
    If Not Intersect(Target, Range("O:O")) Is Nothing Then
        Target.Value = Cells(Target.Row, "L")
    End If
    For i = Target.Row To 4 Step -1
        If Not IsNumeric(Cells(i, Target.Column)) Then
            fila = i + 1
            Exit For
        End If
    Next
    '
    For i = fila To Cells(Rows.Count, Target.Column).End(xlUp).Row
        If Cells(i, "B") = "TOTALES" Then
            Cells(i, Target.Column) = tot
            Exit For
        End If
        tot = tot + Cells(i, Target.Column)
    Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas