Corso VBA Excel ITA - 22 - Combinazioni For/If

  Рет қаралды 11,139

NickTheGeek

NickTheGeek

Күн бұрын

Пікірлер: 73
@riccardoricky1335
@riccardoricky1335 3 жыл бұрын
Non conoscevo la funzione exit for, utilissima per risolvere un problema su una sub, grazie come sempre
@NickTheGeek
@NickTheGeek 3 жыл бұрын
Grazie a te per il commento
@vitogiuseppetoto7595
@vitogiuseppetoto7595 3 жыл бұрын
Ciao Nick, grazie per come riesci a far comprendere, con chiarezza, elementi molto complessi. Grazie per il lavoro che hai fatto.
@NickTheGeek
@NickTheGeek 3 жыл бұрын
Grazie a te per il commento Vito.
@enzof3820
@enzof3820 5 жыл бұрын
questo video mostra ancor piu' chiaramente l'enorme potenza sia di calcolo sia di analisi dati che e' possibile ottenere con la conoscenza e l'utilizzo del vba in excel grazie Nick per tutto l'impegno che hai dedicato a questo bellissimo e utilissimo corso
@NickTheGeek
@NickTheGeek 5 жыл бұрын
Grazie a te Enzo :)
@RanieroCiani
@RanieroCiani 5 жыл бұрын
bravissimo! è la I volta che capisco qualcosa del VBA. Ho condiviso i link al tuo corso sulla mia pagina di FB
@NickTheGeek
@NickTheGeek 5 жыл бұрын
Ottimo, grazie mille per la condivisione, è molto importante per me :)
@andreagiovannini2858
@andreagiovannini2858 6 жыл бұрын
Ciao NickTheGeek, video interessantissimo grazie! Mi è risultato di fondamentale importanza per la risoluzione di un problema riscontrato su una subroutine, il punto in cui parli dell’istruzione Exit For.
@NickTheGeek
@NickTheGeek 6 жыл бұрын
Ottimo! Contento che ti sia servito :) grazie a te
@guglielmomeloni2176
@guglielmomeloni2176 3 ай бұрын
Ho notato in questo video quando hai cercato di visualizzare il dispari non avendo la possibilità di inserire , nel messaggio di errore è apparsa la parola GO TO. Domando, il GO TO sostituisce il THEN ?
@domenicolardo4579
@domenicolardo4579 4 жыл бұрын
Per verificare se un numero è dispari si può utilizzare la stessa istruzione utilizzata per i numeri pari cambiando il valore di mod 2 = 1 anzichè mod 2 = 0 perchè qualsiasi numero dispari diviso 2 da come resto 1
@NickTheGeek
@NickTheGeek 4 жыл бұрын
Sì certo si può fare anche così
@edoardolanotte3930
@edoardolanotte3930 4 жыл бұрын
Nik sbaglio se dico che l'istruzione Exit For può essere usata anche per fermare il ciclo al primo valore "a scendere " della colonna? cioè posso usare l'istruzione anche se ho più valori uguali ma voglio fermarmi al primo. Sbaglio?
@NickTheGeek
@NickTheGeek 4 жыл бұрын
Giusto Edoardo, puoi avere anche valori uguali, in ogni caso con il codice mostrato nel video l'esecuzione si ferma quando il programma trova il primo di questi valori.
@robertobraicovick6867
@robertobraicovick6867 6 жыл бұрын
Grazie!
@nevianicla7510
@nevianicla7510 Жыл бұрын
Complimenti per i video. Sono fatti veramente bene. Ho provato a fare un esercizio per la valutazione dei ricavi. La prima riga di Excel è di intestazione (Acquisti - colonna 1, vendite - colonna 2, ricavi - colonna 3, valutazione - colonna 4). Il ciclo For Next funziona correttamente, ma la If non restituisce valori corretti: ad esempio mi accetta numeri come 213 e non come 133: Dim i As Integer For i = 1 To 9 Cells(i, 3).Offset(1, 0) = Cells(i, 2).Offset(1, 0) - Cells(i, 1).Offset(1, 0) If Cells(i, 3).Offset(1, 0) >= 100 And Cells(i, 3).Offset(1, 0) < 200 Then Cells(i, 4) = "SI" End If Next i
@NickTheGeek
@NickTheGeek Жыл бұрын
Ciao, grazie per i complimenti. Il problema è che compili la colonna C (con la prima linea di codice) e fai la verifica sempre utilizzando Offset(1,0), quindi spostandoti di una riga verso il basso rispetto a "i", mentre la scrittura di "SI" la fai direttamente sulla riga "i", quindi la colonna D è sfasata. Per semplificare non utilizzerei Offset:: Dim i As Integer For i = 2 To 9 Cells(i, 3) = Cells(i, 2) - Cells(i, 1) If Cells(i, 3) >= 100 And Cells(i, 3) < 200 Then Cells(i, 4) = "SI" End If Next i Avendo eliminato Offset, ho fatto partire il ciclo For dal valore 2 anziché 1.
@eugeniovalsecchi303
@eugeniovalsecchi303 3 жыл бұрын
vorrei porti una domanda relativa alle macro; dove posso formulare tale domanda
@NickTheGeek
@NickTheGeek 3 жыл бұрын
ciao, puoi provare a scriverla qui nei commenti
@massimodicarpegna7189
@massimodicarpegna7189 Жыл бұрын
ciao, come faccio a far scrivere al programma più “cose” per una SOLA condizione se verificata? faccio un piccolo esempio: ipotizzammo che io abbia nella colonna a1 5 studenti e invece nella riga a abbia 4/5 materie diverse (matematica, italiano, storia, ecc.) e di fianco a ogni studente c’è il voto. come faccio a dire a vba di scrivermi in una piccola tebella di fianco di mettermi soltanto gli studenti che abbiano preso più di “6” e quindi di scrivere il nome delle studente la materia e il voto tutto su una riga, e poi a scendere continuare con gli altri. non so se è chiaro il mio esempio….
@NickTheGeek
@NickTheGeek Жыл бұрын
Ciao, non so se ho capito bene. Supponiamo di avere 5 studenti e 4 materie, quindi la tabella è A1:E6. Dato che la colonna A e la riga 1 contengono le intestazioni, l'intervallo in cui sono presenti i voti è B2:E6. Bisogna verificare ogni cella dell'intervallo e, se il valore è >= 6, allora nella tabella secondaria vengono scritti studente, materia e voto. Diciamo che queste 3 colonne della tabella secondaria sono G, H, I. Il codice sarebbe questo: Sub voti() Dim intervallo As Range Set intervallo = Range("B2:E6") Dim prima_riga_vuota As Integer prima_riga_vuota = 2 'la scrittura della tabella secondaria inizia dalla riga 2 perché nella prima ci sono le intestazioni (studente, materia, voto) Dim cella As Range For Each cella In intervallo 'verifica ogni cella dell'intervallo B2:E6 If cella.Value >= 6 Then Cells(prima_riga_vuota, 7) = Cells(cella.Row, 1) 'scrive studente nella colonna G Cells(prima_riga_vuota, 8) = Cells(1, cella.Column) 'scrive materia nella colonna H Cells(prima_riga_vuota, 9) = cella.Value 'scrive voto nella colonna I prima_riga_vuota = prima_riga_vuota + 1 'incrementa la variabile in modo che il prossimo studente sia scritto nella riga successiva End If Next cella End Sub Fammi sapere se funziona e se è tutto chiaro.
@aruannovincenzo
@aruannovincenzo 3 жыл бұрын
Buonasera Prof. NickTheGeek, in riferimento alla impossibilità di UNDO, le volevo chiedere, se fosse possibile realizzare un'istruzione che ci permetta di fotografare le operazioni fatte per un x numero di volte, così da permetterci di riportare indietro il foglio di lavoro fino ad un limite da noi prestabilito. Si può fare oppure non è previsto?
@NickTheGeek
@NickTheGeek 3 жыл бұрын
Ciao Vincenzo. Non penso che si possa fare in maniera semplice, sarebbe parecchio complicato creare una subroutine che registri tutte le operazioni eseguite.
@aruannovincenzo
@aruannovincenzo 3 жыл бұрын
@@NickTheGeek leggevo di un oggetto application che poteva avere una proprietà undo, ma per una sola operazione precedente al lancio di una sub. Credo che sia quello il punto di partenza. Oppure con un'operazione di salvataggi sequenziali associati ad un ciclo if che nomina i files in sequenza (es. da v01 a v10 e ricominciare da v01 al raggiungimento della v10), si potrebbe riprendere quello che si è fatto, in questo caso tornando indietro di 10 passi/salvataggi. Comunque grazie per la risposta. E posso dire che è un corso che sto seguendo con molto entusiasmo.
@NickTheGeek
@NickTheGeek 3 жыл бұрын
Il metodo Undo, come hai scritto anche tu, si riferisce solo alle azioni eseguite direttamente dall'utente prima di eseguire una subroutine, quindi non può essere utilizzato per riavvolgere il codice eseguito da VBA. L'altra ipotesi mi sembra piuttosto complessa, perché richiederebbe diversi salvataggi che possono comportare almeno 2-3 problemi: 1) bisognerebbe capire quando eseguirli: alla fine della subroutine? Oppure ogni volta che viene modificato un singolo valore nel foglio? 2) se vengono eseguiti più di 10 salvataggi non ci si potrebbe fidare del nome del file (perché la v01 sarebbe successiva alla v10, ad esempio), quindi per capire l'ordine esatto ci si dovrebbe basare sulla data di modifica del salvataggio (non so se sia possibile) 3) quando viene trovato il salvataggio corretto, bisognerebbe sostituirlo in qualche modo al file originario, che è quello attualmente in uso e quindi quello che sta eseguendo le istruzioni VBA di "recupero" del salvataggio; potrebbe essere complesso riuscire a fare il giro completo, dato che a un certo punto i due file avrebbero lo stesso nome e sarebbero nella stessa cartella, quindi solo uno dei due potrebbe essere aperto; probabilmente si potrebbe rinominando il file originario già all'inizio della subroutine che contiene le istruzioni di recupero, ma anche in questo caso a un certo punto bisognerebbe eliminare il file rinominato, e non sarebbe possibile farlo dato che le istruzioni di eliminazione si troverebbero su quello stesso file.
@diavolettto81
@diavolettto81 4 жыл бұрын
Ciao ho iniziato a seguire i tuoi video da qualche giorno. Ultimamente ho necessità di imparare un po’ di vba e ti ho trovato casualmente. Mi piace come spieghi ed ogni video essendo breve, è anche semplice da capire. Volevo chiederti se era possibile ( visto che non avevi la tastiera italiana) utilizzare la possibilità falsa del comando if per inserire in colonna B i numeri dispari.
@NickTheGeek
@NickTheGeek 4 жыл бұрын
Ciao Marco, grazie per seguirmi. Sì, puoi usare un "Else" per gestire la condizione falsa e quindi far scrivere "dispari" nella colonna B. Non ho capito però il riferimento alla tastiera straniera.
@diavolettto81
@diavolettto81 4 жыл бұрын
NickTheGeek oddio forse ho sbagliato video? Comunque mi sembra che in un video non potevi mettere il segno di diverso () per il “mod” e quindi non hai messo i numeri dispari. Per questo mi chiedevo se si poteva usare un else
@NickTheGeek
@NickTheGeek 4 жыл бұрын
ah sì sì, può essere anche questo, ci sono altri video in cui sono in difficoltà con la tastiera ma normalmente riesco a passare da una all'altra; in ogni caso si può usare un else.
@diavolettto81
@diavolettto81 4 жыл бұрын
NickTheGeek comunque ti avviso...probabilmente a breve inizieró a stalkerarti che ho già qualche problema con una form che sto creando... fai ancora in tempo a bloccarmi 😂😂😂😂
@NickTheGeek
@NickTheGeek 4 жыл бұрын
Sono pronto a risponderti (spero)!
@lorenzodecarlo9125
@lorenzodecarlo9125 6 жыл бұрын
Ciao. ti seguo da pochi giorni ma sto trovando molto utili i tuoi video su VBA. Complimenti per la chiarezza con cui spieghi gli argomenti. Ho due domande: 1) è possibile creare dei piccoli giochi (rompicapi,etc..) utilizzando VBA? 2) Farai anche dei video in cui la programmazione VBA, oltre che ai fogli di calcolo, interessi anche i grafici?
@NickTheGeek
@NickTheGeek 6 жыл бұрын
Ciao Lorenzo, grazie :) 1) In generale direi di sì, poi dipende dalla complessità del gioco, ma intendi crearlo per poi farne un programma a sé stante (tipo file exe)? In questo caso non credo si possa, perché ti serve Excel per far girare il codice che scrivi in VBA. 2) Non l'ho mai fatto e non ci avevo pensato, ma adesso mi hai messo la pulce nell'orecchio quindi forse almeno un video lo farò.
@lorenzodecarlo9125
@lorenzodecarlo9125 6 жыл бұрын
Si è vero. VBA è un'applicativo Excell, quindi non si può lanciare un codice esternamente. Comunque avendo iniziato da pochissimo ad interessarmi alla programmazione pensavo di farne uno, anche semplice, per soddisfazione personale, dato che sono appassionato di videogiochi :)
@NickTheGeek
@NickTheGeek 6 жыл бұрын
Forse in generale VBA non è il programma più indicato per fare giochi anche semplici, però se continuerai a seguirmi vedrai un po' come creare delle interazioni con l'utente, anche con delle finestre contenenti pulsanti e altri controlli che in qualche modo possono ricordare un normale programma (che però, appunto, deve sempre girare all'interno di Excel).
@lorenzodecarlo9125
@lorenzodecarlo9125 6 жыл бұрын
Si continuerò di sicuro a seguirti. Per piccolo gioco stavo pensando di disegnare con i colori nel foglio di calcolo una macchinetta del caffè e un programma che in base alla moneta di input ti fornisce il numero e il tipo di moneta in output xD non è un gioco lo so, ma ci proverò. Per quanto riguarda i giochi seri mi piacerebbe anche imparare a farli con i linguaggi appropriati =D Comunque continua così (y)
@giovanniciriello8585
@giovanniciriello8585 7 жыл бұрын
Ciao, prima di tutto complimenti per questi tutorial, sono fatti veramente bene. Alla fine del video dici di voler dedicare un altro video alla combinazione For/If e passare poi agli altri cicli. Dato che non li trovo, li stai registrando, hai interrotto il progetto o semplicemente stanno altrove? Thanks
@NickTheGeek
@NickTheGeek 7 жыл бұрын
Ciao e grazie per i complimenti :) Pubblico un video ogni fine settimana quindi il prossimo sarà domenica 11.
@giovanniciriello8585
@giovanniciriello8585 7 жыл бұрын
Ok, sapresti anche dirmi quanti video ti occorreranno per chiudere il corso?
@NickTheGeek
@NickTheGeek 7 жыл бұрын
Non lo so esattamente, ma almeno un'altra decina
@giorgiogatti4909
@giorgiogatti4909 3 жыл бұрын
Salve Nicola con questo video centra relativamente cortesemente se mi puoi venire incontro in un range di 40 colonne G11:G200 in cella G6 devo contare quanti valori contiene ogni singola colonna naturalmente da distribuire G6 poi H6 eccetera colonna per colonna forse lo avrai detto in qualche lezione ma mi sarà sfuggito. Grazie
@NickTheGeek
@NickTheGeek 3 жыл бұрын
Ciao Giorgio. Se ho capito bene, per 40 colonne a partire dalla G ti serve inserire nella riga 6 il conteggio dei valori presenti nella stessa colonna tra le righe 11 e 200, corretto? In tal caso puoi usare direttamente la funzione Conta.Valori di Excel; ricordati che in VBA i nomi delle funzioni devono essere scritti in inglese, quindi in questo caso Conta.Valori diventa CountA. Inoltre prima del nome della funzione devi scrivere WorksheetFunction. Se dovessi fare questo lavoro solo per la colonna G, allora potresti scrivere: Cells(6, 7) = WorksheetFunction.CountA(Range("G1:G200")) Dato che lo devi ripetere per 40 colonne, devi usare un ciclo For: For i = 7 to 46 Cells(6, i) = WorksheetFunction.CountA(Range(Cells(11, i), Cells(200, i))) Next i Fammi sapere.
@giorgiogatti4909
@giorgiogatti4909 3 жыл бұрын
Salve e buona giornata. OK risolto il problema countA, l'unico dubbio è stata la variabile valutata VARIANT però ha il codice fa il conteggio voluto. Grazie
@vincenzochiara5809
@vincenzochiara5809 6 жыл бұрын
Ciao, ho scoperto il tuo canale per caso mentre stavo eseguendo delle ricerche. Fai dei video molto interessanti ma per me, purtroppo, sono poco utili perchè non ho le conoscenze adeguate per comprenderli. Ti spiego: io non capisco assolutamente NULLA di programmazione. Avrei bisogno di un programma o qualsiasi cosa che mi dia una lista di tutte le possibili combinazioni, senza ripetizione, di n elementi a gruppi di k. Credo che tu possa aiutarmi, viste le tue competenze. Esiste un software? se si come potrei risolvere il problema? Ti ringrazio del tempo che vorrai dedicarmi
@NickTheGeek
@NickTheGeek 6 жыл бұрын
Ciao, se sai usare un po' di Excel puoi iniziare a guardare dal video 1 della playlist VBA e vedere se la programmazione fa per te. Per quanto riguarda la tua richiesta, a questo link dovresti trovare quello che chiedi www.dcode.fr/combinations inserisci i valori di n e k, e premi Generate.
@vincenzochiara5809
@vincenzochiara5809 6 жыл бұрын
@@NickTheGeek grazie mille
@tecnicip1021
@tecnicip1021 4 жыл бұрын
Posso suggerirti una cosa? La prossima volta che pubblichi usa gentilmente una risoluzione più alta, almeno hd. I video a 480 sono davvero difficili sa seguire, ho iniziato a confondere la "i" con la "j" e con "1". Oltre al fatto che mi si stanca prima la vista. Se possiedi ancora i files originali potesti ripubblicarli nella versione HD (o full HD), sarebbe fantastico. Grazie comunque per l'ottimo lavoro.
@NickTheGeek
@NickTheGeek 4 жыл бұрын
ci ho già provato ma non ci riesco, quando li carico sono tutti in bassa risoluzione tranne il 39 e il 40 che erano un unico file che ho diviso in due parti, e dopo quell'operazione sono rimasti in HD anche su youtube; ho provato in tutti i modi ma con gli altri non ci sono mai riuscito
@propwash5061
@propwash5061 6 жыл бұрын
Ciao, prima di tutto volevo farti i complimenti per i video, sono tutti molto chiari e interessanti. Volevo chiederti se potevi fare un video sull'inserimento celle con un ciclo if-then ( o darmi semplicemente qualche consiglio) da utilizzare per l'allineamento di celle presenti in due colonne distinte, ma contenenti valori uguali. Grazie in anticipo.
@NickTheGeek
@NickTheGeek 6 жыл бұрын
Ciao Claudio, grazie per i complimenti. Non ho capito cosa intendi per allineamento, ad esempio se nelle prime 3 righe della colonna A ci sono i valori 10, 20, 30, e nelle prime 3 righe della colonna B ci sono i valori 10, 50, 20, cosa dovrebbe fare la macro?
@propwash5061
@propwash5061 6 жыл бұрын
@@NickTheGeek ad esempio la colonna A contiene un elenco di 4 nomi in cui abbiamo rispettivamente FRANCESCO (A1), LUCA(A2), MASSIMO(A3), SIMONE(A4) [ordinati dalla A alla Z] ; la colonna B contiene un elenco di 3 nomi [sempre ordinati dalla A alla Z] in cui abbiamo rispettivamente FRANCESCO (B1), MASSIMO (B2), SIMONE (B3). Volevo sapere se potresti darmi qualche indicazione per far sì che nella colonna B i nomi uguali (come ad esempio SIMONE (A4) SIMONE (B3))fossero "allineati" ovvero riportati sulla stessa riga, (SIMONE (A4) SIMONE (B4)).
@NickTheGeek
@NickTheGeek 6 жыл бұрын
Altre domande: 1) I nomi di entrambe le colonne sarebbero ordinati alfabeticamente già in partenza? O devono essere ordinati tramite la macro? 2) Nel tuo esempio, dovremmo quindi avere anche MASSIMO in B3 e la cella B2 rimarrebbe vuota? 3) I nomi all'interno di una stessa colonna sono tutti diversi gli uni dagli altri?
@propwash5061
@propwash5061 6 жыл бұрын
@@NickTheGeek 1) si sono già ordinati alfabeticamente 2) si, ovvero la cella B2 (in corrispondenza di Luca (A2) deve rimanere vuota in quanto LUCA non è presente nella colonna B 3) Nessun nome della colonna A si ripete (sono tutti "unici")
@NickTheGeek
@NickTheGeek 6 жыл бұрын
Farei così: Sub confronta() Dim ultima_riga As Long Dim i As Long, j As Long, k As Long ultima_riga = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row 'verifica qual è l'ultima riga della colonna A For i = ultima_riga To 1 Step -1 'cicla attraverso tutti i valori della colonna A, dall'ultimo al primo For j = ultima_riga To 1 Step -1 'stessa cosa, ma nella colonna B If Cells(i, 1) = Cells(j, 2) Then 'controlla se i due valori considerati sono uguali If i j Then 'se i due valori sono uguali, controlla se sono sulla stessa riga Cells(i, 2) = Cells(j, 2) 'se non lo sono, scrive il nome della colonna B nella stessa riga del nome della A End If End If Next j Next i For k = 1 To ultima_riga 'dopo aver scritto tutti i nomi, questo ciclo pulisce le celle If Cells(k, 1) Cells(k, 2) Then 'controlla se i nomi sulla stessa riga sono diversi Cells(k, 2) = "" 'se sono diversi, il nome della colonna B viene cancellato End If Next k End Sub Il motivo per cui all'inizio faccio fare i cicli dall'ultima riga alla prima è che, se li facessi normalmente (dall'alto verso il basso), quando un nome della colonna B viene spostato allora andrebbe a sovrascrivere un nome presente più in basso nella lista. Ho messo commenti per farti capire meglio, comunque se non ti è chiaro ti consiglio di lanciare la subroutine con F8; fammi sapere se funziona
@domenicolardo4579
@domenicolardo4579 4 жыл бұрын
fa eccezione il solo n. 1 che non è divisibile per 2
@NickTheGeek
@NickTheGeek 4 жыл бұрын
Fa eccezione rispetto a cosa?
Corso VBA Excel ITA - 23 - Ciclo Do While... Loop
15:35
NickTheGeek
Рет қаралды 11 М.
Corso VBA Excel ITA - 16 - Condizioni (parte 1)
27:54
NickTheGeek
Рет қаралды 12 М.
🎈🎈🎈😲 #tiktok #shorts
0:28
Byungari 병아리언니
Рет қаралды 4,5 МЛН
Andro, ELMAN, TONI, MONA - Зари (Official Audio)
2:53
RAAVA MUSIC
Рет қаралды 8 МЛН
Sigma girl VS Sigma Error girl 2  #shorts #sigma
0:27
Jin and Hattie
Рет қаралды 124 МЛН
Condizioni con IF e ELSE - VBA Excel Tutorial Italiano 23
11:28
Edoardo Midali
Рет қаралды 3,1 М.
Corso VBA Excel ITA - 27 - Caso reale (pulizia dati)
38:40
NickTheGeek
Рет қаралды 10 М.
Corso VBA Excel ITA - 30 - Matrici
23:29
NickTheGeek
Рет қаралды 10 М.
Oggetto Cells - VBA Excel Tutorial Italiano 38
6:07
Edoardo Midali
Рет қаралды 1,4 М.
Corso VBA Excel ITA - 29 - Interazioni con l'utente
28:10
NickTheGeek
Рет қаралды 8 М.
Creare funzioni - VBA Excel Tutorial Italiano 41
14:14
Edoardo Midali
Рет қаралды 3,1 М.
Corso VBA Excel ITA - 20 - Ciclo For... Next
24:31
NickTheGeek
Рет қаралды 16 М.
🎈🎈🎈😲 #tiktok #shorts
0:28
Byungari 병아리언니
Рет қаралды 4,5 МЛН