aggiungere istruzioni ad una macro
Hai un problema con Excel? 
aggiungere istruzioni ad una macro
di lucio (utente non iscritto) data: 15/09/2013 17:52:18
Buondi'
Ho creato una macro che mentre scrivo sul foglio dei numeri mi dice quando a trovato una coppia di numeri dove il primo e = a 7 e il secondo e >= 8, ora pero' non riesco a dirle di contarmi quelle coppie senza considerare tutti i numeri inferiori al 7
ess. 7 8 7 9 7 11 sono 3 coppie
ma se io faccio 7 5 8 5 6 7 5 5 9 6 6 5 7 5 11 dovrebbero essere 3 coppie lo stesso ma non mi da nulla
come risolvo ?
di Vecchio Frac data: 15/09/2013 18:55:10
1) abbi pazienza quando invii una discussione o una risposta, non cliccare due volte su invia; il server elabora tutti i messaggi e li visualizza in ordine (ho eliminato il messaggio doppio)
2) si capisce molto poco della descrizione del problema e del risultato da ottenere (punteggiatura, sintassi, ecc.)
3) nell'esempio che hai fatto, data la sequenza di numeri, stando alle regole della premessa, ci sono solo due coppie il cui primo numero è 7; ma non rispettano la seconda condizione per cui il secondo numero deve essere maggiore o uguale a 8
4) vediamo la macro, perchè lo scenario non è descritto (scrivi i numeri sul foglio e poi lanci l'elaborazione? si elabora mentre digiti?)
di lucio (utente non iscritto) data: 16/09/2013 04:05:01
Caro Vecchio Frac
intanto grazie per la risposta imminente.
Porgo le mie scuse Il fatto di mandare 2 volte la discussione e stata puramente involontaria.
Si in effetti non son stato molto chiaro nella discussione precedente, ma al momento ho risolto per fortuna .
Se posso pero', avrei un altro problema,e non riesco ad arrivarne a capo!
Come vedrai nella macro ho creato un ciclo che mi conta cella per cella a partire da A,2 sino a U,2 per poi andare a capo e cosi via e ho "nominato" le celle da A,1 sino a U,1
con i numeri da 1 a 21
e coloro la colonna V di un colore qualsiasi
Dunque,la macro si elabora da sola mentre digito e vorrei dirle di contare ed avvisarmi quando si verifica una situazione per 3 volte consecutivamente.
La situazione e questa :(
8 9 9 8 9 9 8 9 9 9 8 9 10 9 9 8
come vedi partendo dal primo 8 si e' verificato per 3 volte che in mezzo ai numeri 8 non ci sia stato un 10
ti mando la mia macro
Spero di non essere completamente fuori pista
Sub trova10no()
Dim Riga As Integer
Dim Col As Integer
Dim Cella As Integer
Dim trova10no As Double
Dim CellaDopo As Integer
Dim CellaPrima As Integer
Dim Scarto As Double
Dim Trovata As Boolean
Dim Contatrova10no As Integer
Dim UltimaRiga As Integer
Trovata = False
If cells(2, 1) = "" Then
UltimaRiga = 2
Else
UltimaRiga = ActiveSheet.Range("A1").End(xlDown).Row
End If
For Riga = 2 To UltimaRiga
For Col = 1 To 21 'colonna U
Cella = cells(Riga, Col).Value
If Col = 1 Then
CellaPrima = cells(Riga - 1, 21)
CellaDopo = cells(Riga, Col + 1)
ElseIf Col = 21 Then
CellaPrima = cells(Riga, Col - 1)
CellaDopo = cells(Riga + 1, 1)
Else
CellaPrima = cells(Riga, Col - 1)
CellaDopo = cells(Riga, Col + 1)
End If
If (CellaPrima = 8 And cells = 10 And CellaDopo = 8) Then
Trovata = False
trova10no = 0
ElseIf (CellaPrima = 8 And cells = 9 And CellaDopo = 8) Then
Trovata = True
Contatrova10no = Contatrova10no + 1
If Contatrova10no = 3 Then
cells(Riga, Col).Interior.Color = RGB(0, 255, 255)
cells(Riga, 22) = cells(Riga, 22) + Contatrova10no
Contatrova10no = 0
If CellaDopo = Empty Then
MsgBox " 10 no = 3"
End If
End If
Else
Trovata = False
End If
Next Col
Next Riga
End Sub
|
info
di lucio (utente non iscritto) data: 16/09/2013 17:26:46
P.S. Cosa significa quando la data , il nick name e la scritta che dice se sei registrato o meno nell'elenco delle risposte e' di colore rosso?
di lucio (utente non iscritto) data: 17/09/2013 15:27:12
Va be' grazie di tutto
di Vecchio Frac data: 17/09/2013 16:04:54
Il colore rosso nell'elenco delle risposte indica che si tratta di una ruisposta pervenuta in data odierna.
Così balzano subito all'occhio le discussioni di oggi.
Infatti le risposte dei giorni precedenti sono tutte di colore normale.
Una considerazione ancora.
Hai spuntato come risolta, ma non mi sembra che la discussione sia stata risolta.
Devi darci il tempo per dedicarci, non possiamo seguire tutto e soprattutto non in tempo reale ^_^
Non scoraggiarti se non ricevi risposte immediate; piuttosto segnala cortesemente che attendi ancora una risposta.
di Vecchio Frac data: 17/09/2013 16:07:41
cit. "ma al momento ho risolto per fortuna . "
---> E in quel punto come avresti risolto? magari serve a qualcun altro.
cit. "Spero di non essere completamente fuori pista"
---> Ma per fare cosa? io ancora non ho capito lo scenario e il nuovo problema.
di lucio (utente non iscritto) data: 17/09/2013 17:04:12
Ok grazie, messaggio ricevuto,pensavo di non ricevere piu' alcuna risp,ma se e' cosi' ci mancherebbe altro,giustamente ogni cosa a suo tempo,e il tempo e sempre poco!!! ora mando lo scenario
di lucio (utente non iscritto) data: 17/09/2013 18:23:01
Come vedi lavoro solo sulle celle da A sino a U e nella riga 1 scrivo numeri da 1 a 21 che appunto termina nella cella U,1 .
Questa e' l'impostazione che ho dato al mio foglio di lavoro.
Dalla riga 2 in poi inserisco i dati che mi interessa che la macro analizzi.
La macro funzionera' con MsgBox che mi avvisera' in automatico quando si presenta la situazione nell'esempio sottostante,
e cioe' che tra gli 8 che sono contenuti dalle celle A,2 D,2 H,2 J,2 ,non e' presente un numero pari a 10 ma solo dei numeri pari a 9.
quindi si e' presentata una situazione dove per tre volte consecutive tra i numeri 8 non c'e' alcun numero 10 per tanto la macro mi segnalera' con MsgBox quando inseriro' l'ultimo numero 8 interessato che nell'esempio e' quello in cella J,2.
Quando dico fuori pista intendo che forse la macro e' completamente sbagliata(Conteggio delle celle a parte).
Non riesco propio a capire dove sbaglio.
Al piu' presto mandero' il messaggio di aggiornamento della prima discussione che ho aperto,dove non ho trovato una vera e propria soluzione ma,mi sono accorto che quello che mi interessava in realta' era altro e son riuscito a creare la macro senza problemi.
A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - ECC.
1- 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - -
2- 8 - 9 - 9 - 8 - 9 - 9 - 9 - 8 - 9 - 8 - 9 - 9 - 10 - 9 - 8 - - - - - - - -
3-
4-
5-
6-
|
di lucio (utente non iscritto) data: 17/09/2013 18:31:13
La V e' andata sotto quando ho inviato il mess in realta' ovviamente sarebbe la colonna V che avevo messo dopo la U
Anche i trattini se ne sono andati un po'' per i fatti loro se non capisci provo a mandarne un'altra.
Ho provato a inserire con copia,incolla una griglia gia fatta nei riquadri ma me li mette tutti in verticale.
di Vecchio Frac data: 17/09/2013 18:58:24
Ora credo di aver capito qualcosa in più, formattazione a parte che è comunque un problema anche per me quando occorre ^_^
La macro ti deve segnalare quante volte nella riga considerata, tra un otto e il successivo, non compare il numero dieci. Possibilmente ti deve dire anche per quante volte consecutive ciò si verifica.
E' così?
di lucio (utente non iscritto) data: 17/09/2013 21:42:57
Si esattamente! GRANDISSIMO
non e pero' necessario che mi dica sempre quante volte succede,
ma solo ogni qualvolta succede 3 volte di seguito (in sequenza)
L'esempio che ho mandato e' infatti una sequenza di 3 volte.
La macro che ho fatto io se e' come penso, sara' solo da ritoccare un po',
almeno spero
grazie
di lucio (utente non iscritto) data: 18/09/2013 23:58:23
Buona sera
Nella prima discussione aperta,quello che in realta' mi interessava trovare,erano i
7 DISCRETI
Cioe' mentre scrivo su un foglio, (tenendo conto che l'impostazione di quest'ultimo e quella data dall'esempio postato in precedenza),dei numeri interi da 1 in su' , inserendone uno per cella una cella dopo l'altra procedendo solo orizzontalmente riga per riga,la macro riconosce solo i numeri 7 senza contare i numeri da 6 in giu'.
I numeri >= a 8 fermano e fanno ripartire il conteggio dei 7 discreti consecutivi.
Al momento non posso farvi vedere l'esempio perche' non ho i dati a portata di mano.
di lucio (utente non iscritto) data: 20/09/2013 18:05:52
Nella macro che ho inviato,di sicuro la condizione Cells tra cellaprima e Celladopo
non centra nulla.
Come faccio allora a creare una condizione che dice :
'se trovi un numero di valore x tra 2 celle dello stesso valore x allora conta 1
Vuoi Approfondire?