Condividi:        

EXCEL Rileva Posizioni

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 Rileva Posizioni

Postdi Francesco53 » 01/08/10 23:08

Un saluto a tutti, stò facendo un piccolo foglio in cui mi necessità rintraccciare delle posizioni
determinate dall'incrocio tra due valori. Con la formattazione condizionata, riesco a rintracciare
il numero, ma non riesco a fare in modo che lo stesso e tutti quelli che lo circondano, siano
riportati al lato dello schema, come fisibile nel file che allego. Pensavo di costruire una macro,
ma non dispongo ancora delle conoscenze per realizzare il tutto, la stessa dovrebbe dopo che ho digitato
i numeri, rintracciare quanto realizzato graficamente, ma come realizzato nel file, al lato del campo
di battaglia, azionabile tramite un pulsante. Questo è il file:
http://www.megaupload.com/?d=9ZINKJCX
Ringrazio chiunque possa aiutarmi.
Francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 811
Iscritto il: 20/02/10 18:45

Sponsor
 

Re: EXCEL Rileva Posizioni

Postdi Francesco53 » 01/08/10 23:47

Scusate, per semplificare (spero) la ricerca, lo schema può essere anche quello di questo file che allego.
http://www.megaupload.com/?d=LNPONU15
Non è importante la parte grafica, per ottenere il risultato.
Grazie
Francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 811
Iscritto il: 20/02/10 18:45

Re: EXCEL Rileva Posizioni

Postdi Flash30005 » 01/08/10 23:47

Nel tuo caso è importante sapere se ci sono sempre due righe qualsiasi (tra 7 e 24, tuo es. 13 e 18) e tre colonne (da D a U, tuo esempio H, M e Q) da analizzare oppure può non esserci solo questa condizione (es tre righe e due colonne)?

Fai sapere
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 Rileva Posizioni

Postdi Flash30005 » 02/08/10 00:46

Nell'attesa di una tua risposta ho provato a fare qualcosa...
prova questa macro
Codice: Seleziona tutto
Sub Trascrivi()
Range("AA7:AP24").Clear
UC = Worksheets("Foglio1").Range("IV2").End(xlToLeft).Column
NV = UC - 6
Dim VR(5) As Integer
Dim VC(5) As Integer
NR = 0
NC = 0
RP = 0
For NM = 7 To UC
Riga = ""
Col = ""
NMV = Cells(2, NM).Value
If NMV > 0 And NMV < 37 Then
    If NMV > 18 Then NMV = NMV - 18
    Riga = NMV + 6
    NR = NR + 1
    VR(NR) = Riga
Else
    If NMV > 54 Then NMV = NMV - 18
    Col = NMV - 33
    NC = NC + 1
    VC(NC) = Col
End If
Next NM
For NNR = 1 To NR
    If VR(NNR) > 7 Then
        RigaEI = VR(NNR) - 1
    Else
        RigaEI = VR(NNR)
    End If
    If VR(NNR) < 24 Then
        RigaEF = VR(NNR) + 1
    Else
        RigaEF = VR(NNR)
    End If
    CP = 0
    RigaD = NNR + 6 + RP
    For NNC = 1 To NV - NR
        If VC(NNC) > 4 Then
            ColEI = VC(NNC) - 1
        Else
            ColEI = VC(NNC)
        End If
        If VC(NNC) < 21 Then
            ColEF = VC(NNC) + 1
        Else
            ColEF = VC(NNC)
        End If
        ColD = NNC + 26 + CP
        Range(Cells(RigaEI, ColEI), Cells(RigaEF, ColEF)).Copy Destination:=Cells(RigaD, ColD)
        CP = CP + 3
    Next NNC
    RP = RP + 3
Next NNR
    Range("AA7:AP24").FormatConditions.Delete
End Sub


e... fai sapere
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 Rileva Posizioni

Postdi Francesco53 » 02/08/10 07:38

Ciao Flash, ho provato la macro ma và in errore di run-time 9, indice non incluso nell'intervallo VC(NC) = Col.
Nel tuo caso è importante sapere se ci sono sempre due righe qualsiasi (tra 7 e 24, tuo es. 13 e 18) e tre colonne (da D a U, tuo esempio H, M e Q) da analizzare oppure può non esserci solo questa condizione (es tre righe e due colonne)?
Le circostanze di ricerca, dipendono dai numeri digitati tra le celle G2:K2.
Nel primo file, il foglio2 riporta un altro esempio, altrimenti si può cambiare i numeri in G2:K2 per provare altri casi.
Grazie
Franceso
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 811
Iscritto il: 20/02/10 18:45

Re: EXCEL Rileva Posizioni

Postdi Flash30005 » 02/08/10 09:33

Utilizza il primo file che hai inviato
(avevo già impostato la macro per quel file, mentre il secondo "Battaglia2" ha altri riferimenti e non può funzionare senza modificare la macro).
Poi cancella le tue istruzioni e avvia la macro.
Se vuoi utilizzarla anche per il foglio2
devi modificare solo questa riga di codice (che fa riferimento al foglio1) da così:
Codice: Seleziona tutto
UC = Worksheets("Foglio1").Range("IV2").End(xlToLeft).Column

a così:
Codice: Seleziona tutto
UC = Range("IV2").End(xlToLeft).Column


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 Rileva Posizioni

Postdi Francesco53 » 02/08/10 10:18

Grazie Flash, come sempre, perfetto :)
Francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 811
Iscritto il: 20/02/10 18:45

Re: EXCEL Rileva Posizioni

Postdi Francesco53 » 04/08/10 15:55

Ciao Flash, scusa se ti chiedo una ulteriore variazione, sempre se è possibile. Ho visto che la macro funziona benissimo con lo schema originale, domanda? Cambiando i numeri per variare maggiormente le analisi, naturalmente non funziona, la mia domanda è la seguente:
si può creare una macro che memorizzando la seguenza di numeri sia verticali che orizzontali, ma sempre progressivi, possa eseguire la stessa cosa? questa parte di codice:
If NMV > 0 And NMV < 37 Then
If NMV > 18 Then NMV = NMV - 18
Riga = NMV + 6
NR = NR + 1
VR(NR) = Riga
Else
If NMV > 54 Then NMV = NMV - 18
Col = NMV - 33
NC = NC + 1
VC(NC) = Col
ha dei riferimenti precisi, per cui se cambiano i numeri es. da C7 a C24 anzichè da 1 a 18, potrebbe essere da 30 a 47, non riesce a realizzare la ricerca.
Spero di essere riuscito a spiegare la variazione, e che la tua disponibilità e capacità, possa aiutarmi.
Grazie anche se non dovesse essere possibile, un caro saluto
Francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 811
Iscritto il: 20/02/10 18:45

Re: EXCEL Rileva Posizioni

Postdi Flash30005 » 04/08/10 20:26

Cerco di sforzarmi per capire cosa vorresti fare... e non ci riesco :oops:

faresti meglio a dire cosa hai (i tuoi dati base)
e cosa vuoi ottenere
(mi sembra di capire che l'otteniamo con un vecchio schema)

adattare al nuovo penso si possa fare ma non ho i dati del nuovo. :roll:

fai sapere
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 Rileva Posizioni

Postdi Francesco53 » 04/08/10 22:25

Vorrei solo poter cambiare i numeri, ed ottenere lo stesso risultato che ho con la tua macro.
Francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 811
Iscritto il: 20/02/10 18:45

Re: EXCEL Rileva Posizioni

Postdi Flash30005 » 05/08/10 09:24

Sperando di aver interpretato correttamente le indicazioni

ti invio il file nel quale puoi aumentare sia le colonne che le righe della tabella

download file

testalo a fondo e fai sapere

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 Rileva Posizioni

Postdi Francesco53 » 05/08/10 13:51

Ciao Flash, grazie per il file che hai inviato, però purtroppo non è quello che chiedevo io, non voglio aumentare le righe o colonne da cui fare la ricerca, voglio poter variare i numeri di ricerca, esempio:
File originale che funziona benissimo con la tua macro
Colonna C7:C24 numeri da 1 a 18
Colonna V7:V24 numeri da 19 a 36
Riga D6:U6 numeri da 37 a 54
Riga D25:U25 numeri da 55 a 72
Variazione richiesta:
poter inserire nei range elencati sopra, Riga..;Colonna... etc) numeri differenti, esempio:
Colonna C7:C24 numeri da 47 a 64
Riga D6:U6 numeri da 65 a 82
sempre e comunque numeri unici, mai ripetuti.
Spero di essere riuscito a spiegarmi, mi rendo conto che per te non è semplice capire quello che uno ha in testa, ma non riesco a trovare altre parole per la mia richiesta, provo anche a postarti due immagini di esempio:
Immagine
Immagine
Grazie
Francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 811
Iscritto il: 20/02/10 18:45

Re: EXCEL Rileva Posizioni

Postdi Flash30005 » 05/08/10 14:40

Quello che richiedi stravolge l'intera macro,
un conto è assegnare un numero riga oltre il quale è colonna (tabella iniziale)
e un altro è mettere dei numeri a caso che possono essere righe o colonne (per la macro è solo un valore)

Comunque non è impossibile ma mi occorre un po' di tempo...
soprattutto per rendere la macro "semplice" e affidabile.

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 Rileva Posizioni

Postdi Flash30005 » 05/08/10 15:26

Sempre utilizzando lo schema originale (posizione della tabella e dei numeri da trovare)
Cancella la formattazione condizionale nella tabella e le formule ai lati della tabella e poi
prova ad utilizzare questa macro
Codice: Seleziona tutto
Sub Trascrivi()
Range("AA7:AP24").Clear
    Range("D7:U24").Interior.ColorIndex = xlNone
    Range("D7:U24").Font.ColorIndex = 0
UC = Worksheets("Foglio1").Range("IV2").End(xlToLeft).Column
NV = UC - 6
Dim VR(5) As Integer
Dim VC(5) As Integer
NR = 0
NC = 0
RP = 0
For NM = 7 To UC
Riga = ""
Col = ""
NMV = Cells(2, NM).Value
For NMT = 7 To 24
NVT = Cells(NMT, 3).Value
If NMV = NVT Then
NR = NR + 1
VR(NR) = NMT
    Range(Cells(NMT, 4), Cells(NMT, 21)).Interior.ColorIndex = 8
GoTo salta
End If
Next NMT
For NMT = 7 To 24
NVT = Cells(NMT, 22).Value
If NMV = NVT Then
NR = NR + 1
VR(NR) = NMT
    Range(Cells(NMT, 4), Cells(NMT, 21)).Interior.ColorIndex = 8
GoTo salta
End If
Next NMT

For NMT = 4 To 21
NVT = Cells(6, NMT).Value
If NMV = NVT Then
NC = NC + 1
VC(NC) = NMT
   Range(Cells(7, NMT), Cells(24, NMT)).Interior.ColorIndex = 8
GoTo salta
End If
Next NMT
For NMT = 4 To 21
NVT = Cells(25, NMT).Value
If NMV = NVT Then
NC = NC + 1
VC(NC) = NMT
   Range(Cells(7, NMT), Cells(24, NMT)).Interior.ColorIndex = 8
GoTo salta
End If
Next NMT
salta:
Next NM
For NNR = 1 To NR
    If VR(NNR) > 7 Then
        RigaEI = VR(NNR) - 1
    Else
        RigaEI = VR(NNR)
    End If
    If VR(NNR) < 24 Then
        RigaEF = VR(NNR) + 1
    Else
        RigaEF = VR(NNR)
    End If
    CP = 0
    RigaD = NNR + 6 + RP
    For NNC = 1 To NV - NR
        If VC(NNC) > 4 Then
            ColEI = VC(NNC) - 1
        Else
            ColEI = VC(NNC)
        End If
        If VC(NNC) < 21 Then
            ColEF = VC(NNC) + 1
        Else
            ColEF = VC(NNC)
        End If
        ColD = NNC + 26 + CP
        Cells(VR(NNR), VC(NNC)).Interior.ColorIndex = 3
        Cells(VR(NNR), VC(NNC)).Font.ColorIndex = 2
        Range(Cells(RigaEI, ColEI), Cells(RigaEF, ColEF)).Copy Destination:=Cells(RigaD, ColD)
        CP = CP + 3
    Next NNC
    RP = RP + 3
Next NNR
    Range("AA7:AP24").FormatConditions.Delete
End Sub



Per sicurezza scarica questo file

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 Rileva Posizioni

Postdi Francesco53 » 05/08/10 16:04

Grazie Flash, funziona benissimo.
Francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 811
Iscritto il: 20/02/10 18:45


Torna a Applicazioni Office Windows


Topic correlati a "EXCEL Rileva Posizioni":


Chi c’è in linea

Visitano il forum: Nessuno e 33 ospiti