¿Cómo extraer la cadena entre la enésima y la N+1 aparición de un carácter en Excel 2010?

¿Cómo extraer la cadena entre la enésima y la N+1 aparición de un carácter en Excel 2010?

Tengo una hoja de cálculo con una columna que contiene una lista de uno o más nombres de bases de datos. Lamentablemente, el tiempo necesario para modificar este informe es largo. Entonces necesito manipular los datos.

La columna contiene todas las bases de datos específicas de un registro en una sola celda, separadas por comas. Necesito separar esta lista y colocar cada base de datos en una celda separada. Nota importante: soynoSe permite utilizar macros/código VBA en esta solución.

El primero es fácil: busque la primera coma y devuelva todo lo que está a la izquierda de ella. Son los siguientes con los que estoy luchando.

Creé una columna que cuenta cuántas comas hay en la celda, para poder determinar si aparecen varias bases de datos en la lista.

¿Cómo puedo afrontar los siguientes?

Respuesta1

Esta no es una respuesta de función de hoja de trabajo, pero tampoco usa VBA.

¿Has intentado utilizar la función "Texto en columnas"? En Excel 2010, es uno de los botones de la cinta Datos.

  1. Seleccione su columna.
  2. Haga clic en el botón "Texto a columnas".
  3. En la primera página del asistente, elija "Delimitado" y luego Siguiente.
  4. En la segunda página, marque "Coma" para elegirla como delimitador. Es posible que desee marcar o desmarcar algunos de los demás según el formato de sus datos.
  5. Probablemente pueda hacer clic en Finalizar en este punto para dividir sus datos en columnas, pero es posible que desee ir a la página siguiente para cambiar los formatos de las columnas.

Respuesta2

Con datos de muestra enA1, enB1ingresar:

=TRIM(MID(SUBSTITUTE($A1,",",REPT(" ",999)),COLUMNS($A:A)*999-998,999))

y copiar a través de:

ingrese la descripción de la imagen aquí

EDITAR #1:

Si comenzamos con material en columnasAyBcomo esto:

ingrese la descripción de la imagen aquí

y ejecuta esta breve macro:

Sub dural()
   Dim N As Long, i As Long, K As Long
   N = Cells(Rows.Count, "A").End(xlUp).Row
   K = 1

   For i = 2 To N
      v = Cells(i, "A").Value
      ary = Split(Cells(i, "B").Value, ",")
      For Each a In ary
         Cells(K, "C").Value = v
         Cells(K, "D").Value = a
         K = K + 1
      Next a
   Next i
End Sub

terminaremos con esto:

ingrese la descripción de la imagen aquí

información relacionada