› Sviluppare funzionalita su Microsoft Office con VBA › calcolare in colonna
-
AutoreArticoli
-
Ciao
Guarda cosa ho detto al post #18819
E questa volta lo mantengo perchè ho la sensazione che vuoi tutto su un vassoio d'argento.
Scusami per la fermezza. Ciao,
Mario
Caro Mario ti scrivo,
recita una canzone di Lucio Dalla.
Tu non mi hai dato un solo compito,
vediamo se almeno ho indovinato i problemi:
1-devo stabilire la variabile ur che deve posizionarsi alla prima riga vuota dopo un elaborato;
2-stabilire la seconda variabile LC che deve scrivere su una riga e non su colonna;
3-mi hai messo fisso i dati che a e b scrivono in colonna 5 e colonna 6.
Detto questo tra ieri sera e questa mattina non è il sonno perso ma la
CAPA è andata in TILT.
Brevemente ti faccio la mia considerazione:
per quelli come me saperne meno saperne di più,
io personalmente ho un altro hobby,
tu hai il tuo hobby,
ma secondo te se esempio faccio il ragioniere e mi
metto a fare l'ingegnere che dici ci riuscirò?
Morandi canta "uno su mille ce la fa"
e tolto UNO gli altri 999 se erano ciuchini
pur crescendo sempre ciuchi rimangono..
OK Mario più di avertelo chiesto più volte non posso
se vuoi sistemare la macro OK a 73 anni non mi ci
metto a studiare l'A,B,C del VBA.
Resta sempre il mio ringraziamento per volermi a imparare.
Cordialmente ti saluto e cmq GRAZIE
Giorgioantonio1
se vuoi sistemare la macro OK a 73 anni non mi ci
metto a studiare l'A,B,C del VBA
Ciao giorgioantonio1, non andiamo oltre con commenti poco utili e non alimentiamo flames. Mario sta dando il proprio contributo ma non è tenuto a sistemare niente. La tua età anagrafica non è un ostacolo nell'apprendimento anche per hobby (per tutti noi qui questo è un hobby), rileggi con pazienza i suoi consigli e vedi di applicare per come ti riesce: se incontri nuovi ostacoli o difficoltà nell'applicazione, siamo qui per ragionarvi e ridiscutere insieme, ma per favore non abbiamo bisogno di paternali, saggi consigli o lezioni di vita, perchè non è lo scopo di questo forum. Grazie.
Saluti a Mario e vecchio frac, sinceri.
Lungi da me aver dato l'impressione di fare dare paternali.
Se è questa l'impressione cortesemente accettate le mie scuse.
Non ho voluto nascondermi dietro l'età per essere aiutato.
ASSOLUTAMENTE
Mi siete sempre venuto incontro a risolvere richieste
e detto che so che non siete obbligati ad esaudire le mie richieste.
Ho capito che Mario mi vuole aiutare volevo solo dire
ammesso che riesca nell'impresa, se non faccio pratica continua
è difficile ricordarsi di quanto avrei imparato in questo momento
Questo è tutto il succo del mio discorso.
Tengo a precisare che mi avete aiutato, proprio Mario,
di tante altre cose...
Frac puoi cancellare il mio precedente?
E ti ringrazio,
Saluti a entrambi accettate un fumoso caffè.
Il caffè (ma anche una bella birra) sono sempre cose molto gradite
Non preoccuparti, non pensiamoci più e andiamo avanti (tempo e disponibilità permettendo).
Salve a tutti
In questo Forum non c'è (almeno credo) ma in altro Forum è in bella evidenza la mia età.
Fra l'altro faccio notare che le cifre dopo il mio nome latinizzato non si riferiscono al numero di scarpe ma al mio anno di nascita. Come si può notare SONO IL PIU' VECCHIO ma è un aggettivo che non mi piace e dico che sono quello che ha "qualche anno di esperienza in più".
Ciò detto, se talvolta mi atteggio a "duro" è perchè vorrei che quello che io, da autodidatta, ho imparato con tanta fatica servisse per far imparare ad altri a muoversi nei meandri di Excel e VBA.
Adesso basta altrimenti divento prolisso.
Sempre se ho capito bene la richiesta, occorre impostare dei cicli che spazzolino per colonna e per riga tutta la tabella e, una volta individuata la cella cercata (quella non vuota) esegua altro ciclo per contare i numeri 1 presenti e le celle vuote.
ATTENZIONE: è necessario inserire una x nella cella dell'ultima riga e della colonna appresso all'ultima (vedi esempio). Questo per far calcolare uc (ultima colonna) a VBA. Si potrebbe fare in tanti altri modi ma è meglio non complicarsi la vita.
Questo il codice
`Sub TutteColonneFinale() 'individuo l'ultima cella piena della colonna A ur = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 'individuo l'ultima cella piena dell'ultima riga uc = ActiveSheet.Cells(ur, Columns.Count).End(xlToLeft).Column For k = 5 To uc Step 3 'ciclo per colonne For i = ur To 1 Step -1 'ciclo a ritroso If Cells(i, k) <> "" Then 'se una cella NON è vuota For j = i + 1 To ur 'ciclo da quella cella alla fine If Cells(j, k - 1) = 1 Then a = a + 1 'conto gli 1 If Cells(j, k) = "" Then b = b + 1 'conto le vuote Next j 'scrivo i dati e passo alla colonna successiva Cells(ur + 2, k) = a ' <<<<<<<<<<<< da sistemare in ur+1 Cells(ur + 2, k + 1) = b ' <<<<<<<<<<<< da sistemare in ur+1 a = 0: b = 0 Exit For End If Next i Next k End Sub `
Fai sapere. Restiamo d'accordo per il caffè. Ciao,
Mario
SONO IL PIU' VECCHIO
Supermario ha ragione, ma non cambio il mio nick 😛
Ciao Mario,
solo per farti fare due anche tre risate
da range 6 e fino a y1 ho fatto una aggiunta per collocare le x.
Il tutto funziona perfettamente (consentimi ognuno usa la sua tecnica)
Come per dire di più non so .Ciao
Sub TutteColonneFinale()
Dim ur As Long
Dim uc As Integer, k As Integer, j As Integer, i As Integer, a As Integer, b As Integer
'individuo l'ultima cella piena della colonna A
ur = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'individuo l'ultima cella piena dell'ultima riga
uc = ActiveSheet.Cells(ur, Columns.Count).End(xlToLeft).Column
Dim y1 As Integer
Range("A6").Select
ActiveCell.Select
Selection.End(xlDown).Select 'scende all'ultimo rigo pieno
ActiveCell.Offset(1, 0).Range("A1").Select 'scende di una cella
ActiveCell.Rows("1:2").EntireRow.Select 'cancella per intero 2 righe
Selection.ClearContents
ActiveCell.Offset(-1, 0).Range("A1").Select 'sale alla prima riga vuota
ActiveCell.FormulaR1C1 = "x" 'scrive la x
ActiveCell.Offset(0, 6).Range("A1").Select 'si sposta di 6 celle a dx
For y1 = 1 To 90 Step 3
ActiveCell.FormulaR1C1 = "x" 'mette la x per le celle utili
Next y1For k = 5 To uc Step 3 'ciclo per colonne
For i = ur To 1 Step -1 'ciclo a ritroso
If Cells(i, k) <> "" Then 'se una cella NON è vuota
For j = i + 1 To ur 'ciclo da quella cella alla fine
If Cells(j, k - 1) = 1 Then a = a + 1 'conto gli 1
If Cells(j, k) = "" Then b = b + 1 'conto le vuote
Next j
'scrivo i dati e passo alla colonna successiva
Cells(ur + 1, k) = a ' <<<<<<<<<<<< da sistemare in ur+1
Cells(ur + 1, k + 1) = b - 1 ' <<<<<<<<<<<< da sistemare in ur+1
a = 0: b = 0
Exit For
End If
Next i
Next k
End Sub -
AutoreArticoli