› Excel e gli applicativi Microsoft Office › Conta valori con esclusione
-
AutoreArticoli
-
sono presenti nella colonna B in un unico ciclo e restituirenon capisco che cosa intendi , se nella colonna B del tuo file hai solo una Mela(saluto scossa), il ciclo verra effettuato una sola volta, se tu hai oltre la mela l a pera, il ciclo viene effettuato ,una prima volta per trovare mela ed una seconda volta per trovare pera, non puoi dirgli al VBA" senti prendi tutti i dati che ci sono nella colonna B e controlla CONTEMPORISTANTANEAMENTE 😳 se nel foglio file XXX li trovi.per quanto riguarda il conteggio delle celle vuote sostituisci nel codice che ti ho postato precedentemente , queste righe
For Each c In sh.Range("c4").CurrentRegion If IsEmpty(c) Then totale = totale ElseIf InStr(c, vRicerca) = 0 Then totale = totale + 1 End If NextQual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente?( Alan Turing)
provo a rispiegarmi!Se apri il file test_1 ci sono 46 celle occupate da valori.Voglio sapere quanti valori ci sono dentro test_1 escludendo però, tutte le celle che contengono i valori della colonna B del file resoconto.In questo caso tutte le celle che contengono i valori "pere" e "mele"non voglio che vengano conteggiate . In test_1 ci sono 2 celle che contengono pere ed 1 mele. Mi aspetto quindi che il conteggio mi dia come risultato test_1 : 43In questo caso tutte le celle che contengono i valori “pere” e “mele“non voglio che vengano conteggiate . In test_1 ci sono 2 celle che contengono pere ed 1 mele. Mi aspetto quindi che il conteggio mi dia come risultato test_1 : 43Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente?( Alan Turing)
cambiando approccio:cerco le celle che contengano il valore "pere" in test_1 e ne elimino il contenuto. Stessa cosa per "mele". Finiti i valori da "sostituire "nella colonna B, conto i valori. Può funzionare?Option Explicit Public Sub mRicerca() Dim objFSO As Object Dim objFolder As Object Dim objFile As Object Dim wk As Workbook Dim sh As Worksheet Dim shMe As Worksheet Dim lUltRiga As Long Dim c As Range Dim totale As Integer Dim cellepiene As Long Dim dati As Long Dim nomefile As String Dim nomefoglio As String Dim spath As String Dim ultimariga As Long Dim rng As Range Dim cl As Range spath = "C:\Users\Utente\Desktop\prova\cartella\" < << Da modificare With Application .ScreenUpdating = False End With Set shMe = Workbooks("resoconto_1.xlsm").Sheets("foglio1") totale = 0 ultimariga = Cells(Rows.Count, 2).End(xlUp).Row With shMe lUltRiga = .Range( _ "g" & .Rows.Count _ ).End(xlUp).Row End With Set rng = shMe.Range(Cells(1, 2), Cells(ultimariga, 2)) Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(spath) For Each objFile In objFolder.Files Select Case LCase(Right(objFile.Name, 4)) Case ".xls", "xlsx", "xlsm" Set wk = Workbooks.Open(objFile.Path) For Each cl In rng For Each sh In wk.Worksheets lUltRiga = lUltRiga + 1 For Each c In sh.Range("c4").CurrentRegion If InStr(c, cl) = 1 Then totale = totale + 1 End If Next cellepiene = Application.WorksheetFunction.CountA(sh.Range("c4").CurrentRegion) dati = piene - totale nomefile = objFile.Name nomefoglio = sh.Name Next Next shMe.Range("g" & lUltRiga).Value = nomefile shMe.Range("h" & lUltRiga).Value = nomefoglio shMe.Range("j" & lUltRiga).Value = dati totale = 0 wk.Close Set wk = Nothing End Select Next With Application .ScreenUpdating = True End With Set c = Nothing Set wk = Nothing Set sh = Nothing Set shMe = Nothing Set objFile = Nothing Set objFolder = Nothing Set objFSO = Nothing End Sub
incolla questo codice in un modulo e lo eseguiQual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente?( Alan Turing)
Mi da errore di compilazione: variabile non definita sudati = piene - totalemi da un altro errore "impossibile trovare il percorso"Set objFolder = objFSO.GetFolder(sPath)ho lasciato la stessa configurazione di partenza. I file da cercare in una cartella ed il file di resoconto in quella superiore. Ho cambiato il percorso dove avevi segnatofai questa prova, perchè sicuramente è sbagliato il path, crea una Dir sul desktop "prova" apri questa Dir e inserisci il file "resoconto_1.xlsm", una volta copiato il file, dentro questa Dir crea un'altra Dir "cartella" e in questa Dir inserisci i file "test"..
esci e ti trovi sul desktop tasto dx sulla dir prova proprieta è copi il path,inseredo a questo path "..\prova\cartella\"

Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente?( Alan Turing)
avevi ragione. Prima manca un \ !ora va ma non mi torna una cosa. Se voglio escludere "mele" la macro non conta tutti i valori "mele" e i valori che iniziano con mele (melepluto).Se però il contenuto della cella non inizia con la desinenza allora non viene escluso (es plutomele)..sei cintura nera di pazienza.. Scherzi a parte se ci riesci ti ringrazio se no grazie comunque per il tempo che ci hai dedicato!Se però il contenuto della cella non inizia con la desinenza allora non viene escluso (es plutomelemodifica la linea di codice cosiIf (InStr(c, cl)) >= 1 Then
Se voglio escludere “mele” la macro non conta tutti i valori “mele” e i valori che iniziano con mele (melepluto).
Non ho capito
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente?( Alan Turing)
-
AutoreArticoli


