| | Post: 26 | Registrato il: 29/06/2008
| Città: ACQUAFONDATA | Età: 44 | Utente Junior | excel 2007 | | OFFLINE | |
|
20/03/2019 11:29 | |
un'altra richiesta facile :-)
ho bisogno di una macro che mi riporti le colonne A E tante volte quanti sono i valori compresi nel Range delle colonne C D.
vi spiego: il range che va DA ... A nelle colonne C e D a volte sono uguali altre volte invece seguono un range; quindi ogni volta che seguono un range mi dovrebbe riportare i valori tante volte quanti sono i CDC compresi in quel range.
vi allego il file excel con esempio di come mi dovrebbe venire ( ovviamente io ho riportato solo poche righe ma il file è composto da piu di 20000 mila riga e molti RANGE)
spero che qualcuno possa aiutarmi.
grazie
|
|
| | Post: 4.142 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
20/03/2019 15:18 | |
Io non ho capito come si genera il risultato atteso dalla tabella A1:E13.
A cosa servono i dati in colonna H?
Alfredo |
| | Post: 26 | Registrato il: 29/06/2008
| Città: ACQUAFONDATA | Età: 44 | Utente Junior | excel 2007 | | OFFLINE | |
|
20/03/2019 15:47 | |
i dati in colonna A:E sono un'estrazione dati (sono circa 20000 righe) ... invece la colonna H è sempre un estrazione dati ma FISSA (per farvi capire come sono formati i range) ...
il mio risultato atteso è solo quello in colonna K;M che dobrebbe puntare quindi alle colonne A:E e quando c'e' un range (quindi D diverso da C ) mi dovrebbe riportare tante volte i valori delle colonne A E quanti sono i valori compresi in quel range.
😕
|
| | Post: 4.143 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
20/03/2019 16:02 | |
Scusami ma il codice 56350008 nella tabella A1:E13 compare 8 volte.
Perchè nel risultato atteso ce ne sono 9?
Alfredo |
| | Post: 27 | Registrato il: 29/06/2008
| Città: ACQUAFONDATA | Età: 44 | Utente Junior | excel 2007 | | OFFLINE | |
|
20/03/2019 16:24 | |
è solo la colonna A da riportare dove compare solo 4 volte ... nel risultato atteso invece compare 9 volte perche nella riga C3:D3 e C5:d5 ci sono dei range
scusate se non mi sono spiegata bene😀 |
| | Post: 3.318 | Registrato il: 03/04/2013
| Utente Master | Excel 2000 - 2013 | | OFFLINE | |
|
21/03/2019 11:48 | |
Buona giornata, stellablu79;
se ho interpretato correttamenta la tua richiesta, potresti provare questo Codice VBA:
Option Explicit
Sub Report()
Application.ScreenUpdating = False
Dim NRc As Long, x As Long, Rcd As Long
Dim k As Integer, y As Integer, z As Integer
NRc = Range("K" & Rows.Count).End(xlUp).Row
If NRc < 3 Then NRc = 3
Range(Cells(3, 11), Cells(NRc, 13)).ClearContents
NRc = Range("A" & Rows.Count).End(xlUp).Row
Rcd = 3
For x = 2 To NRc
y = Right(Cells(x, 3).Value, 3)
z = Right(Cells(x, 4).Value, 3)
For k = y To z
Cells(Rcd, 11).Value = Cells(x, 1).Value
If k > 99 Then Cells(Rcd, 12).Value = Left(Cells(x, 3).Value, 5) & k
If k < 100 And k > 9 Then
Cells(Rcd, 12).Value = Left(Cells(x, 3).Value, 5) & "0" & k
End If
If k < 10 Then
Cells(Rcd, 12).Value = Left(Cells(x, 3).Value, 5) & "00" & k
End If
Cells(Rcd, 13).Value = Cells(x, 5).Value
Rcd = Rcd + 1
Next k
Next x
Application.ScreenUpdating = True
End Sub
A disposizione.
Buon Lavoro.
Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 28 | Registrato il: 29/06/2008
| Città: ACQUAFONDATA | Età: 44 | Utente Junior | excel 2007 | | OFFLINE | |
|
22/03/2019 12:00 | |
GRAZIE GIUSEPPE!!
funziona alla grande ...
pero' ho provato ad un inserire altre righe nella tabella A;E e quando inserisco come range PER ESEMPIO 4WOTHL91 (in colonna C) e 4WOTHL94 (in colonna D) mi da' errore ....
e lo stesso quando inserisco altri volori tipo 5WTO5 etc,,,etc,,,
c'e' un settaggio particolare nella macro per questi valori in colonna C e D?
perche l'errore me lo segnala qui:
For x = 2 To NRc
y = Right(Cells(x, 3).Value, 3)
z = Right(Cells(x, 4).Value, 3)
grazieeeee
paola |
| | Post: 29 | Registrato il: 29/06/2008
| Città: ACQUAFONDATA | Età: 44 | Utente Junior | excel 2007 | | OFFLINE | |
|
22/03/2019 12:29 | |
ho capito qual'e' il problema
nella macro c'e' impostato il fatto che i valori in colonna C e D terminano con 3 valori numerici ... ma purtroppo nella mia estrazione possono terminare con 4 o 3 o 2 o 1 o solo lettere
c'e' modo di impostarlo senza questa restrizione?
sarebbe perfetto
grazie
|
| | Post: 3.323 | Registrato il: 03/04/2013
| Utente Master | Excel 2000 - 2013 | | OFFLINE | |
|
22/03/2019 16:29 | |
Buon pomeriggio, stellablu79. @stellablu79, scrive:
... c'e' modo di impostarlo senza questa restrizione? sarebbe perfetto ...
Temo servano due regole: - Lunghezza della stringa 8 caratteri - Gli ultimi tre caratteri siano numerici Posso pensare a qualche alchimia, ma temo sia molto difficile superare questi due vincoli. Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 3.324 | Registrato il: 03/04/2013
| Utente Master | Excel 2000 - 2013 | | OFFLINE | |
|
22/03/2019 18:20 | |
Buon pomeriggio, stellablu79. solo per curiosità, ma se i Record - in Colonna "C" fosse 2WITESPA - in Colonna "D" fosse 2WITESRL Quale sarebbe la sequenza in Colonna "L"? Grazie dell'attenzione che potrai dedicarmi. Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 3.712 | Registrato il: 28/06/2011
| Città: AGORDO | Età: 70 | Utente Master | 2013 | | OFFLINE | |
|
22/03/2019 20:04 | |
Non funziona se in colonna C =12WRT995 tre numeri e colonna in D =12WRT1005 quattro numeri. Oppure colonna C maggiore di D
Option Explicit
Sub Report()
Application.ScreenUpdating = False
Dim NRc As Long, x As Long, Rcd As Long, w As Long, n As Long, t As Long
Dim y As Integer, z As Integer, Msg1 As String, Msg2 As String
NRc = Range("K" & Rows.Count).End(xlUp).Row
If NRc > 2 Then Range(Cells(3, 11), Cells(NRc, 13)).ClearContents: Range(Cells(2, 8), Cells(NRc, 8)).ClearContents
NRc = Range("A" & Rows.Count).End(xlUp).Row
Rcd = 3
For x = 2 To NRc
If Cells(x, 3) = Cells(x, 4) Then
Cells(Rcd, 11) = Cells(x, 2)
Cells(Rcd, 12) = Cells(x, 3)
Cells(Rcd, 13) = Cells(x, 5)
Rcd = Rcd + 1
Else
t = Len(Cells(x, 3))
n = 0
For w = 1 To t
If IsNumeric(Right(Cells(x, 3).Value, w)) Then n = n + 1 Else Exit For
Next w
y = 9 & Right(Cells(x, 3).Value, n)
z = 9 & Right(Cells(x, 4).Value, n)
Msg1 = Replace(Cells(x, 3), Right(Cells(x, 3).Value, n), "")
For k = y To z
Msg2 = Right(k, n)
Cells(Rcd, 11) = Cells(x, 2)
Cells(Rcd, 12) = Msg1 & Msg2
Cells(Rcd, 13) = Cells(x, 5)
Rcd = Rcd + 1
Next k
End If
Next x
Range(Cells(3, 12), Cells(Rcd + 10, 12)).Copy
Cells(2, 8).PasteSpecial
NRc = Range("H" & Rows.Count).End(xlUp).Row
Range(Cells(2, 8), Cells(NRc, 8)).RemoveDuplicates Columns:=1, Header:=xlYes
Application.ScreenUpdating = True
MsgBox "fatto"
End Sub [Modificato da raffaele1953 24/03/2019 01:43] Excel 2013 |
| | Post: 30 | Registrato il: 29/06/2008
| Città: ACQUAFONDATA | Età: 44 | Utente Junior | excel 2007 | | OFFLINE | |
|
25/03/2019 16:13 | |
GiuseppeMN, 3/22/2019 5:20 PM:
Buon pomeriggio, stellablu79. solo per curiosità, ma se i Record - in Colonna "C" fosse 2WITESPA - in Colonna "D" fosse 2WITESRL Quale sarebbe la sequenza in Colonna "L"? Grazie dell'attenzione che potrai dedicarmi. Giuseppe
ci puo essere sempre un range per esempio composto da 2witespa, 2witesql, 2witesqz, 2witesrl ....
quindi possono cambiare sia gli ultimi digit che la lunghezza della stringa 😢
|
| | Post: 3.335 | Registrato il: 03/04/2013
| Utente Master | Excel 2000 - 2013 | | OFFLINE | |
|
25/03/2019 17:30 | |
Buon pomeriggio, stellablu79. @stellablu79, scrive:
ci puo essere sempre un range per esempio composto da 2witespa, 2witesql, 2witesqz, 2witesrl .... quindi possono cambiare sia gli ultimi digit che la lunghezza della stringa
Credo che senza una regola precisa non riuscirò a proporti una possibile soluzione coerente con la tua richiesta. Mi spiace! Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
|
|