Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

RIPORTARE DEI VALORI IN BASE A DEI RANGE

Ultimo Aggiornamento: 25/03/2019 17:30
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
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Ordine dei valori (3 messaggi, agg.: 20/06/2019 21:57)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 20:25. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com