Condividi:        

[excel] aggiungere un anno su una stringa

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[excel] aggiungere un anno su una stringa

Postdi andryx1985 » 07/02/15 17:07

Salve a tutti e piacere!

Ho un quesito: devo preparare dei file csv dove ho tantissimi titoli tipo questo:

125 PR3 ENDURO PRO 2008-2011 PRO

ho però bisogno di creare una riga per ogni anno disponibile, come ad esempio:

125 PR3 ENDURO PRO 2008
125 PR3 ENDURO PRO 2009
125 PR3 ENDURO PRO 2010
125 PR3 ENDURO PRO 2011


c'è un sistema per velocizzare tutto il processo? ho piu di 1700 stringhe !

ho provato con sostituisci ma essendo ogni cella diversa, dovrei cambiare la formula ad ogni stringa!

se qualcuno volesse vedere il file, l' ho caricato qui: filedropper.com/fogliopulito.

la colonna C è un esempio di come dovrebbe essere il risultato finale.

praticamente sono tutti modelli di moto, devo preparare il csv per importarlo su ebay e ogni riga corrisponde ad un'inserzione che devo inserire.
come vedete, su alcuni modelli di moto c'è scritto ad esempio 99-04 che sarebbero gli anni per i quali un determinato pezzo di moto va bene per quel modello di moto.

io dovrei appunti creare una stringa singola per ogni anno quindi, togliendo 99-04, dovrei aggiungerci su una 1999, su un'altra 2000 ecc.
come vedrete però ogni stringa è diversa!

grazie mille!
andryx1985
Newbie
 
Post: 1
Iscritto il: 07/02/15 17:05

Sponsor
 

Re: [excel] aggiungere un anno su una stringa

Postdi ricky53 » 08/02/15 01:30

Ciao,
gli anni, mi pare di capire che possono essere scritti con "4" cifre in alcuni casi e con "2" cifre in altri casi
ma SEMPRE se :
a. il primo anno è di "4" cifre sarà di "4" cifre anche i secondo anno della stessa riga

b. il primo anno è di "2" cifre sarà di "2" cifre anche i secondo anno della stessa riga


Sarebbe utile un file di esempio


Comunque come soluzione io vedo solo una macro in VBA.

Tu come stai a conoscenza del "VBA" e della programmazione ?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [excel] aggiungere un anno su una stringa

Postdi Flash30005 » 08/02/15 02:13

Ciao Andryx1985 e benvenuto nel Forum

Leggi quanto scritto da Ricky nel post precedente

Penso che questa macro possa risolvere per fare questo devi aggiungere un foglio di Excel con il nome di "Modelli" (senza apici)
Copia l'intera macro e inseriscila in un modulo con Alt+F11 entri nell'editor Vba e dal Menu Inserisci scegli Modello
sul frame di destra incolli il codice e avvii la macro
Codice: Seleziona tutto
Sub RiMod()
Dim Ws1 As Worksheet
Dim Ws2 As Worksheet
Set Ws1 = Worksheets("foglio pulito")
Set Ws2 = Worksheets("Modelli")
Ws2.Cells.Clear
UR1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row
For RR1 = 1 To UR1
    Str1 = Ws1.Range("A" & RR1).Value
    Str1AI = InStrRev(Str1, "-")
    If Str1AI = 0 Or Str1AI < 5 Then
        Ws2.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = StrOut
        GoTo SaltaRR1
    End If
    Str10 = Trim(Mid(Str1, 1, Str1AI - 5))
    Str20 = Trim(Mid(Str1, Str1AI + 5, Len(Str1)))
    AnnIn = Val(Mid(Str1, Str1AI - 4, 4))
    AnnFin = Val(Mid(Str1, Str1AI + 1, 4))
    For AnnoM = AnnIn To AnnFin
        StrOut = Str0 & Str10 & " " & AnnoM & " " & Str20
        Ws2.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = StrOut
    Next AnnoM
SaltaRR1:
Next RR1
End Sub

Salvi il file in .xlsm

Nel foglio modelli avrai tutte le righe come hai richiesto ora salvi il foglio in file .Csv

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [excel] aggiungere un anno su una stringa

Postdi Anthony47 » 08/02/15 12:51

Il file di esempio e' dipsonibile su http://www.filedropper.com/fogliopulito (il link e' nascosto nel primo messaggio di andryx1985)

Il file pero' non ha una struttura regolare ne' e' un "csv" (manca qualsiasi separatore di campo); esempi di record:
Codice: Seleziona tutto
300 THUNDERBIKE  2004-2005
125/200 PR3  ENDURO  PASSO  520   2008-2011  ENDURO  PASSO  520
AF-1 125  EUROPA   1990-1991,1991-1994  EUROPA
ETX 350 4.35
125 RR MOTARD LC  2012
"50 RR  "" ALU""   2003-2006  "" ALU"""
KX 125 F1,G1  1986-1987,1989

Cio' nonostante non e' impossibile creare un file di output che replichi le informazioni su piu' righe, rispettando il motto anglosassone "shit in /shit out"; quindi ad esempio producendo, a fronte del record
Codice: Seleziona tutto
AF-1 125  EUROPA   1990-1991,1991-1994  EUROPA
questo output
Codice: Seleziona tutto
AF-1 125  EUROPA   1990  EUROPA
AF-1 125  EUROPA   1991  EUROPA
AF-1 125  EUROPA   1991  EUROPA
AF-1 125  EUROPA   1992  EUROPA
AF-1 125  EUROPA   1993  EUROPA
AF-1 125  EUROPA   1994  EUROPA

Tuttavia prima di procedere ti chiedo di verificare se questo output non strutturato e' importabile dove devi importarlo.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "[excel] aggiungere un anno su una stringa":


Chi c’è in linea

Visitano il forum: Nessuno e 41 ospiti