todas qué quiere mayor matematicas las igual funciones funcion entonces decir condicional avanzado excel formula excel-formula

qué - Simular la función de división de cadenas en la fórmula de Excel



qué quiere decir<> en excel (7)

Estoy tratando de dividir una cadena en una fórmula excel, algo que puedo hacer en muchos lenguajes de programación, por ejemplo

string words = "some text".split('' '');

El problema es que no puedo estar seguro de que haya más de una palabra en la celda. Si trato de utilizar las funciones FIND() o SEARCH() , devuelven #VALUE si no hay espacio. ¿Hay alguna manera fácil de dividir la cadena para que devuelva las palabras individuales (o incluso mejor, de modo que devuelva la primera palabra o todas las demás )?


Algunas grandes hojas de cálculo-fu en las otras respuestas, pero creo que han pasado por alto que puede definir una función definida por el usuario (udf) y llamarla desde la hoja o una fórmula.

El próximo problema que tienes es decidir si trabajar con una matriz completa o con un elemento.

Por ejemplo, este código de función UDF

Public Function UdfSplit(ByVal sText As String, Optional ByVal sDelimiter As String = " ", Optional ByVal lIndex As Long = -1) As Variant Dim vSplit As Variant vSplit = VBA.Split(sText, sDelimiter) If lIndex > -1 Then UdfSplit = vSplit(lIndex) Else UdfSplit = vSplit End If End Function

permite elementos individuales con lo siguiente en una celda

=UdfSplit("EUR/USD","/",0)

o uno puede usar un bloque de celdas con

=UdfSplit("EUR/USD","/")


Estas cosas tienden a ser más simples si las escribe una celda a la vez, dividiendo las fórmulas largas en otras más pequeñas, donde puede verificarlas a lo largo del camino. Luego puede ocultar los cálculos intermedios o resumirlos en una sola fórmula.

Por ejemplo, tomando la fórmula de James:

=IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3)

Lo cual solo es válido en Excel 2007 o posterior.

Divídalo de la siguiente manera:

B3: =FIND(" ", A3) C3: =IF(ISERROR(B3),A3,LEFT(A3,B3-1))

Es un poco más fácil trabajar, un pedazo a la vez. Una vez hecho, puedes convertirlo en

=IF(ISERROR(FIND(" ", A3)),A3,LEFT(A3,FIND(" ", A3)-1))

si así lo deseas.


Lo siguiente devuelve la primera palabra en la celda A1 cuando está separado por un espacio (funciona en Excel 2003):

=LEFT(A1, SEARCH(" ",A1,1))


Resalta la celda, usa Dat => Text en Columnas y el DELIMITER es espacio. El resultado aparecerá en tantas columnas como la división encuentre el espacio.


Si necesita la asignación a las columnas solo una vez, la respuesta es la funcionalidad "Texto a columnas" en MS Excel.

Consulte el artículo de ayuda de MS aquí: http://support.microsoft.com/kb/214261

HTH


Una fórmula para devolver la primera palabra o todas las otras palabras .

=IF(ISERROR(FIND(" ",TRIM(A2),1)),TRIM(A2),MID(TRIM(A2),FIND(" ",TRIM(A2),1),LEN(A2)))

Ejemplos y resultados

Text Description Results Blank Space some Text no space some some text Text with space text some Text with leading space some some Text with trailing space some some text some text Text with multiple spaces text some text

Comentarios sobre la Fórmula:

  • La función TRIM se usa para eliminar todos los espacios iniciales y finales. El espacio duplicado dentro del texto también se elimina.
  • La función FIND encuentra el primer espacio
  • Si no hay espacio, se devuelve el texto recortado
  • De lo contrario, la función MID se usa para devolver cualquier texto después del primer espacio

=IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3)

Esto primero comprobará si la celda contiene un espacio, si lo hace, devolverá el primer valor del espacio, de lo contrario devolverá el valor de la celda.

Editar

Solo para agregar a la fórmula anterior, tal como está si no hay ningún valor en la celda, devolvería 0. Si está buscando mostrar un mensaje o algo para decirle al usuario que está vacío, podría usar lo siguiente:

=IF(IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3)=0, "Empty", IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3))