› Sviluppare funzionalita su Microsoft Office con VBA › indice confronta con vba
-
AutoreArticoli
-
Buona sera a tutti e grazie in anticipo a chi avrà voglia e soprattutto tempo per aiutarmi.
Sul file allegato, ho provato ad inserire delle macro "pescate" sul web e da me adattate per poter utilizzare in maniera "ordinata" dei dati relativi ad ordini (frutta e verdura) estrapolati da files excel ricavati da un gestionale.
Questi files "sorgente" presentano i dati relativi ad ordini univoci che però sono distribuiti su più righe, così, dopo essere riuscito ad ordinare con una macro i numeri d'ordine incolonnati senza righe vuote, mi sono avvalso di formule (per l'appunto "indice confronta") per recuperare gli altri dati (data ordine; articolo; data scadenza; quantità etc.).
Mi piacerebbe capire come ottenere tutti i dati legati ad i vari ordini, senza avvalermi di formule.
Grazie in ogni caso
Ricky (utente inesperto)
Allegati:
You must be logged in to view attached files.ciao
e' abbastanza una semplice sub() o Macro
ti riallego il tuo file dove nel foglio dati trovi questa
Option Explicit Sub Da_Sheetnov4_a_dati() Dim i As Long Dim Nriga As Long Dim sh4 As String Dim shD As String sh4 = "Sheetnov4" shD = "dati" Nriga = 4 For i = 20 To Sheets(sh4).Cells(Rows.Count, 3).End(xlUp).Row If IsDate(Sheets(sh4).Cells(i, 3)) = True Then Sheets(shD).Cells(Nriga, 1) = Sheets(sh4).Cells(i + 2, "F") Sheets(shD).Cells(Nriga, 2) = Trim(Mid(Sheets(sh4).Cells(i, "D"), 12, 10)) Sheets(shD).Cells(Nriga, 3) = Sheets(sh4).Cells(i, "L") Sheets(shD).Cells(Nriga, 4) = Sheets(sh4).Cells(i + 3, "AD") Sheets(shD).Cells(Nriga, 5) = Sheets(sh4).Cells(i + 3, "C") Sheets(shD).Cells(Nriga, 6) = Sheets(sh4).Cells(i, "C") Nriga = Nriga + 1 End If Next i End Sub
Allegati:
You must be logged in to view attached files.Grazie 1000 Mr. X
ho scaricato ora il file.
Lo provo e ti faccio sapere.
Ricky
Ciao Mr. X
sto provando ad integrare il codice che mi hai fornito con il modulo 2 "copia Macro"
' Scelta rapida da tastiera: CTRL+p che avevo impostato per ricavare i numeri d'ordine in colonna senza celle vuote.Non ci riesco
Puoi aiutarmi per cortesia?
nel frattempo provo ad insistere
RickyZ
Se ho capito.
Vai nel menu sviluppo scegli macro nella finestra che si apre evidenzia la macro che ti interessa , tasto opzioni è trovera la combinazione di tasti conferma.
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Ciao Albatros e grazie x l'interessamento
Non penso tu abbia capito la mia esigenza, ma penso di non essermi spiegato bene.
Penso di aver risolto "unendo" i codici in questo modo:
Sub copia()
' copia Macro
' Scelta rapida da tastiera: CTRL+pDim i As Integer
Dim ur As Long
Dim lr As Long
Dim rng As Range
Dim cel As RangeDim Nriga As Long
Dim shX As String
Dim shD As String
shX = Sheets("dati").Range("A1").Value
shD = "dati"
Nriga = 4ur = Sheets(Range("A1").Value).Cells(Rows.Count, "F").End(xlUp).Row
Set rng = Sheets(Range("A1").Value).Range("F2:f" & ur)
For Each cel In rng
lr = Sheets("dati").Cells(Rows.Count, "A").End(xlUp).Row
If cel.Value <> "" Then
For i = 1 To 1
Sheets("dati").Cells(lr + 1, i).Value = cel.Offset(0, i - 1)
Next i
End If
Next celFor i = 1 To Sheets(shX).Cells(Rows.Count, 3).End(xlUp).Row
If IsDate(Sheets(shX).Cells(i, 3)) = True Then
Sheets(shD).Cells(Nriga, 1) = Sheets(shX).Cells(i + 2, "F")
Sheets(shD).Cells(Nriga, 2) = Trim(Mid(Sheets(shX).Cells(i, "D"), 12, 10))
Sheets(shD).Cells(Nriga, 3) = Sheets(shX).Cells(i, "L")
Sheets(shD).Cells(Nriga, 4) = Sheets(shX).Cells(i + 3, "AD")
Sheets(shD).Cells(Nriga, 5) = Sheets(shX).Cells(i + 3, "C")
Sheets(shD).Cells(Nriga, 6) = Sheets(shX).Cells(i, "C")
Nriga = Nriga + 1
End If
Next i'ora copio il foglio dati e lo rinomino con il valore posto nella cella F1
Sheets("dati").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Range("g1").ValueActiveSheet.Range("A4:F300").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = FalseRange("M1,N1,O1").Select
Selection.ClearContents
Range("P1:Q1").Select
Range("Q1").Activate
Selection.Cut Destination:=Range("M1:N1")
Range("M1:N1").Select
Range("L1").ActivateEnd Sub
Immagino si possa snellire.
Grazie ancora a tutti
RickyZ
Allegati:
You must be logged in to view attached files. -
AutoreArticoli