Post by Norman JonesPost by Roby36I valori nelle seguenti colonne: A,G,L,O,P,AB,AF,AG,AS;
Vorrei popolare una nuova tabella.
'------------------
Roby36 ha scritto:
Ciao Norman
Post by Norman JonesI dati per la nuova tabella dovrebbero essere selezionati secondo i
valori in colonna A?
In effetti la cosa e' un pochino piu' complessa, perche' dovrei
verificare quale campo tra le colonne AB e AS contiene una determinata
stringa (facciamo ad esempio 'QWE') se ad esempio tale stringa e'
contenuta nella colonna AB ed il campo A e' diverso da 'Cancellazione',
allora devo prendere i valori del campo AB, O e P e portarli in una
nuova tabella, altrimenti se la stringa e' contenuta in AS devo
prendere i valori in AF,AG,AS sempre con il campo A diverso da
'Cancellazione'. Inoltre i valori dei Campi AB e AS sono ripetuti piu'
volte quindi quando il valore del campo viene trovato per la prima
volta viene aggiunto nella tabella nuova altrimenti, i valori dei campi
associati (O/P e AF/AG) vengono affiancati es della nuova tabella:
AB,AF O,P/AF,AG O,P/AF,AG O,P/AF,AG O,P/AF,AG
PIPPO 10,10 11,12 11,13
14,15
PLUTO 13,10 15,16 11,9
12,11
......
Post by Norman JonesQuale è l'ultima colonna della prima tabella?
CA
'---------------------------------------
Ciao Roby,
Prova:
'=============>>
Public Sub Tester01()
Dim WB As Workbook
Dim SH1 As Worksheet
Dim SH2 As Worksheet
Dim rng As Range
Dim rngOut As Range
Dim rngTog As Range
Const sStr1 As String = "STRINGA1"
Const sStr2 As String = "STRINGA2"
Const sStr3 As String = "STRINGA3"
With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
Set WB = ActiveWorkbook '<<=== CAMBIARE
Set SH1 = WB.Sheets("Foglio1") '<<=== CAMBIARE
Set SH2 = WB.Sheets("Foglio2") '<<=== CAMBIARE
Set rng = SH1.Range("A1")
rng.AutoFilter Field:=7, _
Criteria1:="=*" & sStr1 & "*", _
Operator:=xlAnd, _
Criteria2:="=*" & sStr2 & "*"
rng.AutoFilter Field:=12, _
Criteria1:="=*" & sStr3 & "*"
Set rngOut = SH1.AutoFilter.Range. _
SpecialCells(xlCellTypeVisible)
SH2.Cells.Clear
rngOut.Copy SH2.Range("A1")
Set rngTog = SH2.Range("B1:F1,H1:K1,M1:N1,Q1:AA1," _
& "AC1:AE1,AH1:AR1,AT:CA")
rngTog.EntireColumn.Delete
With Application
.Calculation = CalcMode
.ScreenUpdating = True
End With
End Sub
'<<=============
Ma, poichè A1:CA30000 contiene 2,370,000 celle, niente accadrà molto
velocemente!
Forse, sarebbe adatto usare Access?
---
Regards,
Norman