FILAS A COLUMNAS

03/03/2007 - 19:10 por donondepravia | Informe spam
Hola a todos, tengo una tabla de articulos con las columnas referencia
y codbarras. El problema es que la mima referencia tiene varios
codigos de barras diferentes de tal manera que tengo varias filas
donde se repite la ref con codigos de barras diferentes. Quiero
traspasarsarla a una tabla donde solo haya una referencia en cada fila
y los diferentes codbarras asignados me los inserte en columnas
diferentes. Por ejemplo:
REF CODBARRAS
01 80123456
01 80678978

me genere otra tabla que se presente de la siguiente manera:

REF CODBARRAS CODBARRAS2
01 80123456 80678978

No se si me he explicado bien. Agradezco de antemano a quien me pueda
echar una mano.
Donondepravia.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
03/03/2007 - 23:34 | Informe spam
hola, ?

... tengo una tabla de articulos con las columnas referencia y codbarras.
... problema... la mima referencia tiene varios codigos de barras diferentes
... Quiero... una tabla donde solo haya una referencia en cada fila y los diferentes codbarras... en columnas... Por ejemplo:
REF CODBARRAS
01 80123456
01 80678978
me genere otra tabla que se presente de la siguiente manera:
REF CODBARRAS CODBARRAS2
01 80123456 80678978
No se si me he explicado bien...



una forma [de entre varias posibilidades mas... y conociendo mas 'detalles al detalle'] :D

1) ordena tu listado por REF como primer 'llave/criterio' y CODBARRA como segunda 'llave/criterio'
2) usa los filtros avanzados para extraer/copiar a otro lugar solo registros unicos de tus REF
3) selecciona [en tu listado original] los CODBARRA aplicables a cada grupo [misma REF] y haces...
ctrl+C
seleccionas la siguiente columna en el listado con las REF unicas 'correspondiente'
[menu] edicion / pegado especial / -> valores {+} transponer

-> la otra alternativa es que uses macros para que del extracto de los filtros avanzados hagan 'el resto'...
tomar cada uno 'hasta el siguiente' y hacer el copiado {+} el pegado especial/valores/transponer

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Ivan
03/03/2007 - 23:52 | Informe spam
hola chicos,

antes de ver la respuesta de Hector, habia preparado este codigo que
posiblemente ya no te haga falta, o/y que seguramente el propio
Hector, (y, posiblemente con los 'dichosos' filtros avanzados) podra
mejorar mil veces.

pero bueno, ya que está ahi va:->

para el codigo se supone que los datos los tienes tal cual los
expones: Ref en la columna 'A' y el codigo nº 1 en la 'B'

tendrias que pegarlo en un modulo normal del editor de VBA y
ejecutarlo, bien directamente con F5, bien via 'Herramientas' ->
'Macros' -> ?Ejecutar macro', bien...

Sub BuscarIgual()
Dim f As Long, celda As Range, c As Long
f = 2
Application.ScreenUpdating = False
Do While Cells(f, 1) <> ""
Do
If Cells(f + 1, 1) = "" Then Exit Sub
Set celda = Range("a" & f + 1 & ":a" & _
[a65536].End(xlUp).Row).Find(Cells(f, 1), _
Cells(f + 1, 1), xlValues, xlWhole)
If Not celda Is Nothing Then
c = Range("v" & f).End(xlToLeft).Offset(, 1).Column
celda.Offset(, 1).Copy Cells(f, c)
celda.EntireRow.Delete
If Cells(1, c) = "" Then _
Cells(1, c) = "Codigo Nº " & c - 1
End If
Loop Until celda Is Nothing
f = f + 1
Loop
End Sub


un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
#3 Gavillas
11/03/2007 - 20:12 | Informe spam
¡ Muy buena tu macro, Ivan !
Y perfectamente compatible con el sistema de filtros avanzados tan bien
explicado por Hector.

Saludos de Gavillas.

"Ivan" escribió en el mensaje
news:
hola chicos,

antes de ver la respuesta de Hector, habia preparado este codigo que
posiblemente ya no te haga falta, o/y que seguramente el propio
Hector, (y, posiblemente con los 'dichosos' filtros avanzados) podra
mejorar mil veces.

pero bueno, ya que está ahi va:->

para el codigo se supone que los datos los tienes tal cual los
expones: Ref en la columna 'A' y el codigo nº 1 en la 'B'

tendrias que pegarlo en un modulo normal del editor de VBA y
ejecutarlo, bien directamente con F5, bien via 'Herramientas' ->
'Macros' -> ?Ejecutar macro', bien...

Sub BuscarIgual()
Dim f As Long, celda As Range, c As Long
f = 2
Application.ScreenUpdating = False
Do While Cells(f, 1) <> ""
Do
If Cells(f + 1, 1) = "" Then Exit Sub
Set celda = Range("a" & f + 1 & ":a" & _
[a65536].End(xlUp).Row).Find(Cells(f, 1), _
Cells(f + 1, 1), xlValues, xlWhole)
If Not celda Is Nothing Then
c = Range("v" & f).End(xlToLeft).Offset(, 1).Column
celda.Offset(, 1).Copy Cells(f, c)
celda.EntireRow.Delete
If Cells(1, c) = "" Then _
Cells(1, c) = "Codigo Nº " & c - 1
End If
Loop Until celda Is Nothing
f = f + 1
Loop
End Sub


un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
#4 Ivan
12/03/2007 - 03:12 | Informe spam
hola Gavillas

me alegro que te sirva, pero toma nota de este par de apuntes->

1.- si quieres mantener la hoja original tal cual puedes crear una
copia con el resultado añadiendo justo debajo del
'Application.ScreenUpdating = False' y antes del 'Do While...', la
siguiente instruccion->

Worksheets(ActiveSheet.Name).Copy after:=ActiveSheet

2.- esta instruccion ->

c = Range("v" & f).End(xlToLeft).Offset(, 1).Column

cambiala (habia puesto "v" en vez de "iv") por esta ->

c = Range("iv" & f).End(xlToLeft).Column + 1

a mi al menos me gusta mas,

un saludo
Ivan
Respuesta Responder a este mensaje
#5 Gavillas
12/03/2007 - 18:40 | Informe spam
No me canso Ivan, gracias otras vez. Eres un perfeccionista.

Gavillas.

"Ivan" escribió en el mensaje
news:
hola Gavillas

me alegro que te sirva, pero toma nota de este par de apuntes->

1.- si quieres mantener la hoja original tal cual puedes crear una
copia con el resultado añadiendo justo debajo del
'Application.ScreenUpdating = False' y antes del 'Do While...', la
siguiente instruccion->

Worksheets(ActiveSheet.Name).Copy after:=ActiveSheet

2.- esta instruccion ->

c = Range("v" & f).End(xlToLeft).Offset(, 1).Column

cambiala (habia puesto "v" en vez de "iv") por esta ->

c = Range("iv" & f).End(xlToLeft).Column + 1

a mi al menos me gusta mas,

un saludo
Ivan
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida