martes, 10 de julio de 2012

Cadenas Excel

Excel

  • El resultado que muestran las celdas que contienen el resultado de una función se refresca cada vez que se pulsa la tecla delete en algún lugar.
  • SI.ERROR(A, B) devuelve A, pero si es un error, devuelve B
  • HALLAR("x", "excelente") devuelve la posición de "x" en "excelente"
  • IZQUIERDA("excelente", 1) devuelve el primer caracter de "excelente"
  • DERECHA("excelente", 1) devuelve el primer caracter de "excelente", empezando por la derecha
  • ALT+F11 permite acceder a Visual Basic para Excel.
    • Se puede insertar un módulo y allí definir funciones que son reconocidas en la hoja de calculo.
    • Por ejemplo:

      Public Function hola(str)
          hola = "Hola " & str
      End Function
      

       permite usar una fórmula como =hola(A1)
    • Se pueden usar expresiones regulares:

      Public Function apellidosSafe(str)
          Dim result As String
          
          Dim re
          Set re = CreateObject("vbscript.regexp")
          With re
                  .IgnoreCase = True
                  .MultiLine = False
                  .Global = True
          End With
          
          result = Replace(str, "á", "a")
          result = Replace(result, "é", "e")
          result = Replace(result, "í", "i")
          result = Replace(result, "ó", "o")
          result = Replace(result, "ú", "u")
          result = Replace(result, "ñ", "n")
          result = Replace(result, "'", "")
          result = Replace(result, "-", "")
          re.Pattern = "^de las ": result = re.Replace(result, "delas")
          re.Pattern = "^de los ": result = re.Replace(result, "delos")
          re.Pattern = "^de la ": result = re.Replace(result, "dela")
          re.Pattern = "^del ": result = re.Replace(result, "del")
          re.Pattern = "^de ": result = re.Replace(result, "de")
          re.Pattern = "^la ": result = re.Replace(result, "la")
          
          apellidosSafe = result
      End Function
      

      en este caso, trata de uniformizar una cadena que contiene un apellido latino, quitando los caracteres especiales y juntando algunas de las palabras

    • Una implementación de la función hash SHA1 se puede encontrar en  Password hash function for Excel VBA
    • Parece que otra versión de SHA se puede encontrar en  http://vb.wikia.com/wiki/SHA-1.bas
    • Algunas referencias: