Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Tania,
Hai avuto l'opportunità di provare il mio codice?
===
Regards,
Norman
Questo browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Ho un file con 120.000 righe e devo stabilire delle regole per eliminare delle righe.
Ogni 9 righe devo contare il numero di zeri e se il numero di zeri, presenti in queste 9 righe è superiore o uguale a 6, devo eliminare tutte e 9 le righe.
C'è un modo per fare questa operazione, senza dover scorrere tutto il database?
Grazie
Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.
Ciao Tania,
I sei zeri si devono trovare tutti nella stessa colonna, sempre la stessa colonna per tutte le righe.
Gli zeri sono inseriti come valori.
Non ci sono celle vuote.
Se nella colonna macro ci sono 6 zeri o più, le nove righe, che hanno la stessa voce nella colonna place vanno eliminate
Prova qualcosa del genere:
'========>>
Option Explicit
'-------->>
Public Sub Tester()
Dim WB As Workbook
Dim srcSH As Worksheet, destSH As Worksheet
Dim srcRng As Range, destRng As Range
Dim arrIn As Variant, arrOut() As Variant
Dim i As Long, j As Long, p As Long, q As Long
Dim iCtr As Long, jCtr As Long
Dim UB As Long, UB2 As Long
Dim LRow As Long
Const sFoglio\_Sorgente As String = **"Foglio1" '<<=== Modifica**
Const sFoglio\_Destinazione As String = **"Report" '<<=== Modifica**
Const sColonne\_Database As String = **"A:E" '<<=== Modifica**
Const iPrima\_Riga\_Database As Long = **1 '<<=== Modifica**
Set WB = ThisWorkbook
With WB
Set srcSH = .Sheets(sFoglio\_Sorgente)
If SheetExists(sFoglio\_Destinazione) Then
Set destSH = .Sheets(sFoglio\_Destinazione)
destSH.Columns(sColonne\_Database).ClearContents
Else
Set destSH = .Sheets.Add(After:=srcSH)
destSH.Name = sFoglio\_Destinazione
End If
End With
With srcSH
LRow = LastRow(srcSH, .Columns(sColonne\_Database))
Set srcRng = .Range(sColonne\_Database).Resize(LRow - iPrima\_Riga\_Database + 1).Offset(iPrima\_Riga\_Database - 1)
End With
With destSH
.Range(sColonne\_Database).Resize(1).Value = srcRng.Rows(1).Value
Set destRng = .Range(sColonne\_Database).Cells(2, 1)
End With
arrIn = srcRng.Value
UB = UBound(arrIn)
UB2 = UBound(arrIn, 2)
ReDim arrOut(1 To UB, 1 To UB2)
For i = 2 To UB Step 9
iCtr = 0
For j = 1 To 9
If arrIn(i + j - 1, UB2) = 0 Then
iCtr = iCtr + 1
End If
Next j
If iCtr < 6 Then
For p = 1 To 9
jCtr = jCtr + 1
For q = 1 To UB2
arrOut(jCtr, q) = arrIn(i + p - 1, q)
Next q
Next p
End If
Next i
destRng.Resize(jCtr \* 9, UB2) = arrOut
Call MsgBox(Prompt:="Fatto", \_
Buttons:=vbInformation, \_
Title:="REPORT")
End Sub
'-------->>
Public Function LastRow(SH As Worksheet, _
Optional Rng As Range, \_
Optional minRow As Long = 1)
If Rng Is Nothing Then
Set Rng = SH.Cells
End If
On Error Resume Next
LastRow = Rng.Find(What:="\*", \_
After:=Rng.Cells(1), \_
Lookat:=xlPart, \_
LookIn:=xlFormulas, \_
SearchOrder:=xlByRows, \_
SearchDirection:=xlPrevious, \_
MatchCase:=False).Row
On Error GoTo 0
If LastRow < minRow Then
LastRow = minRow
End If
End Function
'--------->>
Public Function SheetExists(sSheetName As String, _
Optional ByVal WB As Workbook) As Boolean
On Error Resume Next
If WB Is Nothing Then
Set WB = ThisWorkbook
End If
SheetExists = CBool(Len(WB.Sheets(sSheetName).Name))
End Function
'<<========
===
Regards,
Norman
Ciao Tania,
Ho un file con 120.000 righe e devo stabilire delle regole per eliminare delle righe.
Ogni 9 righe devo contare il numero di zeri e se il numero di zeri, presenti in queste 9 righe è superiore o uguale a 6, devo eliminare tutte e 9 le righe.
C'è un modo per fare questa operazione, senza dover scorrere tutto il database?
Quante colonne sono incluse nei dati?
Tutti gli zeri dovrebbero essere trovati in una data colonna o i sei zeri possono trovarsi ciascuno in colonne diverse di ogni nove righe del database?
Gli zeri sono inseriti come valori o sono il risultato di formule?
Le celle vuote devono essere considerate zeri?
Per aiutarci a comprendere la tua richiesta, forse potresti pubblicare uno screenshot di esempio.
===
Regards,
Norman