Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

[Excel 2007] - copiare una cella e modificarne il contenuto Opzioni
aetio
Inviato: Thursday, April 28, 2011 9:01:11 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
sto cercando di eliminate alcune delle operazioni manuali di copia/incolla e posizionamento di didascalie all’interno delle pagine dei vari files che contengono le mie arcinote tabelle. anche per eliminare- come ho già spiegato altre volte- quei terribili e a volte frequenti errori dovuti alla manualità che sono veri e propri sgambetti a tradimento : ))
Ecco un’immagine del “teatro delle operazioni”:




Vediamo:
1- in riga 10: nelle celle Q10- R10- S10- T10- U10- V10 ho 1 cod. di settore e 5 codici di componenti di magazzino (nell’es. per il sett. 73’26 ho cod.38- 162- 73- 50- 151) che in precedenza ho copiato in quelle celle da un altro foglio di lavoro
2- in cella B2 ho una dima, che copio in testa alle 5 tabelle che si riferiscono ai componenti (nell’esempio, visibile, la cella B15, e poi via via a scendere ) e che poi manualmente, modificando la lettera c [ics in Symbol] della dima, scrivo dentro a ciascuna i relativi cod. che abbiamo visto al punto 1
Nota:
Le coordinate delle celle di cui al punto 1 sono sempre uguali (Q10- R10- S10- T10- U10- V10), come pure uguali sono quelle di cella B2 e B15 e sono tutte “ancorate” alla grande cella del titolo (B9), mentre quelle relative alle altre celle in capo alle altre 4 tabelle sono posizionate a distanza costante rispetto alla riga di fine tabella precedente,



vale a dire la 3^ libera dopo la fine tabella precedente, in col.B






Dialogo Macro e sequenza:
-copia cella B2 in cella B15 e rinominala “c [ics in Symbol] seguìto da spazio e valore scritto in cella R10”
-copia cella B2 in cella B3^riga vuota dopo la fine della 1^tabella e rinominala “g [ipsilon in Symbol] seguìto da spazio e valore scritto in cella S10”
-copia cella B2 in cella B3^riga vuota dopo la fine della 2^tabella e rinominala “r [ro in Symbol] seguìto da spazio e valore scritto in cella T10”
-copia cella B2 in cella B3^riga vuota dopo la fine della 3^tabella e rinominala “j [fi in Symbol] seguìto da spazio e valore scritto in cella U10”
-copia cella B2 in cella B3^riga vuota dopo la fine della 4^tabella e rinominala “q [teta in Symbol] seguìto da spazio e valore scritto in cella V10”
Fine



Spero di avere esposto tutto in modo sufficientemente chiaro... :))
Grazie assai e buona serata,
eZio
Sponsor
Inviato: Thursday, April 28, 2011 9:01:11 PM

 
a10n11
Inviato: Friday, April 29, 2011 11:05:52 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
siccome la siegazione non è supportata dalla vista delle immagini è difficile interpretare la domanda.
pare che ci siano delle difficoltà a raggiungere il tuo sito dove sono le immagine postate.
saluti
Giap

aetio
Inviato: Friday, April 29, 2011 11:54:29 AM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
infatti, ho notato... ora dovrebbe essere tutto ok.
Spero di essere stato sufficientemente chiaro... in realtà è molto più facile a farsi che a dirsi... :)))

Grazie per tutto, buona giornata
eZio


EDIT
Stanno facendo manutenzione al server... non appena avranno finito si riusciranno a vedere le immagini, mi spiace del disguido...
a10n11
Inviato: Friday, April 29, 2011 3:39:06 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
come puoi vedere la macro l'ho chiamata Booh()
sta a significare che ho provato ad interpretare la richiesta.
vedi se almeno si avvicina a quanto chiesto.

Sub Booh()
Dim mioarr(4)
Dim sigle() As Variant
sigle = Array("c", "g", "r", "j", "q")
n = 0
riga = 15
Set codici = Sheets("foglio1").Range("R10:V10")
For Each cl In codici
mioarr(n) = cl.Value
n = n + 1
Next
Set codici = Nothing
For i = LBound(sigle) To UBound(sigle)
Cells(riga, 2).Value = sigle(i) & " " & mioarr(i)
With Cells(riga, 2).Font
.Name = "Symbol"
.Size = 10
End With
RR = Cells(riga, 2).End(xlDown).Row
riga = Cells(RR, 2).End(xlDown).Row + 2
Next i
End Sub


saluti
Giap

aetio
Inviato: Friday, April 29, 2011 5:27:32 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
so di essere un immenso scocciatore, ma penso che tu abbia capito che sono anche un grande appassionato della Materia... :))
...e forse questo mi salva.
Detto questo... Mamma mia quanto è bella questa macro!!
Vorrei capirne le sfumature... passo-passo, se e quando ne hai voglia e tempo...
La macro funziona senza dare errori e sistema le 5 sigle al posto giusto, ma non vi copia dentro i rispettivi 5 codici del Range R10:V10
Nell'esempio il cod.38 dovrebbe andare con la isc, il cod.162 con la ipsilon, il cod.73 con il ro, il cod.50 col fi e il cod.151 con la teta

-ho modificato il Size da 10 a 18 perché mi serve più grande, ma non riesco a inserire correttamente l'istruzione di colorare di rosso i caratteri
-ho incrementato di 1 la riga dell'istruzione
riga = Cells(RR, 2).End(xlDown).Row + 2
Dobbiamo trovargli un bel nome, perché e molto vicina alla "soluzione finale" e Booh non le rende onore..... ;))
Grazie infinite, buona serata
eZio

a10n11
Inviato: Friday, April 29, 2011 7:50:09 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
aetio ha scritto:

La macro funziona senza dare errori e sistema le 5 sigle al posto giusto, ma non vi copia dentro i rispettivi 5 codici del Range R10:V10
Nell'esempio il cod.38 dovrebbe andare con la isc, il cod.162 con la ipsilon, il cod.73 con il ro, il cod.50 col fi e il cod.151 con la teta


salve
Il nome del foglio su cui lavori come si chiama? io ho usato quello di default "Foglio1"
se il nome del tuo foglio è diverso cambialo nella riga che segue:
Set codici = Sheets("foglio1").Range("R10:V10")

di seguito le spiegazioni di quello che esegue la macro:



Sub Booh()
dichiaro una matrice con 5 elementi
Dim mioarr(4)
Dim sigle() As Variant
Creo una Matrice con i 5 elementi che rappresentano le sigle
sigle = Array("c", "g", "r", "j", "q")
n = 0
riga = 15
qui di seguito carico la matrice "Mioarr" con i valori estratti con il
ciclo For dal Range R10:V10

Set codici = Sheets("foglio1").Range("R10:V10")
For Each cl In codici
mioarr(n) = cl.Value
n = n + 1
Next
Set codici = Nothing
Eseguo il ciclo per ogni elemento della Matrice "Sigle"
For i = LBound(sigle) To UBound(sigle)
scrivo nel foglio nella cella definita da "Riga" il primo elemento
della matrice "Sigle" e il primo elemento della Matrice "Mioarr"

Cells(riga, 2).Value = sigle(i) & " " & mioarr(i)
With Cells(riga, 2).Font
.Name = "Symbol"
.Size = 10
End With
con RR prelevo la prima riga della tabella
RR = Cells(riga, 2).End(xlDown).Row
cerco l'ultima riga della tabella + 2 righe che diventeranno
il mio prossimo valore di Riga

riga = Cells(RR, 2).End(xlDown).Row + 2
Next i
End Sub


saluti
Giap



aetio
Inviato: Friday, April 29, 2011 8:23:48 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
innanzi tutto Grazie per la spiegazione, molto chiara... come sempre del resto ;)

Code:
Il nome del foglio su cui lavori come si chiama? io ho usato quello di default "Foglio1"
se il nome del tuo foglio è diverso cambialo nella riga che segue:
Set codici = Sheets("foglio1").Range("R10:V10")


eh sì...questa bella e doverosa bacchettata me la sono proprio meritata ahahahahahaha
che pollo!! che pollo!!... ma forse è perché sono molto stanco, stamattina ho cominciato a guardare tabelle alle 4...
Un poco sono stato distratto dall'assenza di notifiche di errore (dopo tutto, il foglio1 non lo poteva trovare... perché non c'è proprio!! perché quindi non mi ha dato messaggi di errore?)

Dai, torno a godermi quel capolavoro... e a tirarmi le orecchie da solo... ... per penitenza!!

Grazie assai
, buona serata,
eZio

aetio
Inviato: Sunday, May 01, 2011 11:21:23 AM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
la macro è perfetta...!! Studiandomela per bene, sto cercando di capire come "incastrare" nel suo giusto posto, naturalmente scrivendola anche con la giusta sintassi, l'istuzione per copiare anche in cella B9 il contenuto di cella Q10. So perfettamente di essere un vero (genuino fin nel midollo) rompiscatole, ma la mia passione e la mia ammirazione per le tue creature è tale che proprio non riesco a starmene buono!! :))
Grazie infinite per tutto quello che stai facendo per me...
Buona giornata
eZio
a10n11
Inviato: Sunday, May 01, 2011 6:17:47 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
puoi incastrare l'istruzione prima del ciclo For oppure alla fine dopo il ciclo For.

esempio
1)
Dim mioarr(4)
Dim sigle() As Variant
sigle = Array("c", "g", "r", "j", "q")
n = 0
riga = 15
Range("B9").Value = Range("Q10").Value
Set codici = Sheets("foglio1").Range("R10:V10")
For Each cl In codici
............
...........


2)
............
............
............
For i = LBound(sigle) To UBound(sigle)
Cells(riga, 2).Value = sigle(i) & " " & mioarr(i)
With Cells(riga, 2).Font
.Name = "Symbol"
.Size = 10
End With
RR = Cells(riga, 2).End(xlDown).Row
riga = Cells(RR, 2).End(xlDown).Row + 2
Next i
Range("B9").Value = Range("Q10").Value
End Sub


saluti
Giap

aetio
Inviato: Monday, May 02, 2011 5:44:28 AM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
ho preferito la seconda opzione: per un principiante come il sottoscritto è più "visibile" :)))
Grazie, buona giornata
eZio

Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.