PDA

Visualizza versione completa : aiuto con macro exel.. e vba


ken87
03-09-2006, 12.40.06
avrei bisogno inizialmente di una macro exel fatta in visual basic per exel che sposti il contenuto della colonna A1 nella colonna b1, e la conna b1 in a1.
esempio
tabella exel originane

Numero Uscite
9 40
30 50
28 51
31 52
52 53
67 53


dopo aver fatto girare la macro vorrei che la nuova tabella fossre cosi


Uscite Numero
40 9
50 30
51 28
52 31
53 52
53 67
Fatto questo aggungere istruzioni macro vba che ogni volta la cella uscita e uguale alla sucessiva crea una riga vuota

esemipio tabella originale prima della macro:


Uscite Numero
40 9
50 30
51 28
52 31
53 52
53 67
tabella modificata dalla macro exel


Uscite Numero
40 9
50 30
51 28
52 31

53 52
53 67

dopo uscita 52 la macro ha creato una rigra vuta di separazione per evidenziare che i numeri 52 67 sono usciti tutte due 53 volte..
spero di essere stato piu chiaro di quaello che ho scritto sopra.
grazie dell'aiuto
Vi ringrazio in anticipo dell'aiuto :)

miciomao
04-09-2006, 13.46.38
per lo spostamento delle colonne puoi usare la funzione taglia sull'intera colonna A e poi selezionando la colonna C con click dx fai inserisci celle tagliate.

per l'altra funzione puoi usare questa, ma per quanto ho capito (e credo di non aver capito) non fà altro che inserire una riga vuota ogni volta che incontrerà in successione 2 valori uguali nelle righe:


'=============>>
Public Sub Tester()
Dim WB As Workbook
Dim SH As Worksheet
Dim rng As Range
Dim rCell As Range
Dim RngInsert As Range
Dim iLastRow As Long
Dim CalcMode As Long

Set WB = Workbooks("Pippo.xls") '<<=== da CAMBIARE
Set SH = WB.Sheets("Foglio1") '<<=== da CAMBIARE

iLastRow = SH.Cells(Rows.Count, "A").End(xlUp).Row

Set rng = SH.Range("A2:A" & iLastRow)

On Error GoTo XIT
With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With

For Each rCell In rng.Cells
With rCell
.Select
If .Value = .offset(1).Value _
And .Value <> .offset(-1).Value _
And .offset(-1).Value <> vbNullString Then
If RngInsert Is Nothing Then
Set RngInsert = rCell
Else
Set RngInsert = Union(rCell, RngInsert)
End If
End If
End With
Next rCell

If Not RngInsert Is Nothing Then
RngInsert.EntireRow.Insert
End If

XIT:
With Application
.Calculation = CalcMode
.ScreenUpdating = True
End With
End Sub
'<<=============

ken87
05-09-2006, 17.59.38
Non so come dirlo in realta ho capito malisimo e quello che devo fare e un di piu che una riga vuota mo mi spiego la tabella originale e cosi
uscite 57 63 64 64 64 65 66 67 67 68 68 68 6868
numeri44 69 10 32 52 24 58 2 16 6 13 33 41 80
CONTINUO SOTTO LA TABELLA
uscita 69 70 70
numero 3 4 19

e cosi via

ora il numeri 10 32 52 sono usciti 64
la macro che mi serve ora mi deve trasformare la tamella cosi
uscite 57 63 64 65 66 67 68 69 70
sotto uscita 57 mi scrivera 44
sotto uscita 63 mi scrivera 69
sotto uscita 64 mi scrivera i numeri 10,32,52
sotto uscita 65 mi scrivera i numero 24
sotto uscita 66 mi scrivera i numero 58
sotto uscita 67 mi scrivera i numero 2,16
sotto uscita 68 mi scrivera i numeri 13,33,41,80
sotto uscita 69 mi scrivera i numero 3
sotto uscita 70 mi scrivera i numeri 4 19
e cosi via.
cioe deve mettere nella colonna tutti i numeri usci usciti lo stesso numero di volte.
si puo fare?
grazie dell'aiuto e scusa se sono stato impreciso..
ti ringrazio moltissimo...

miciomao
05-09-2006, 19.37.26
Alzo le mani !!!!!
non ho capito una fava
potresti postare in allegato il file zippato ? magari solo con lo schema e alcuni esempi :)

ken87
06-09-2006, 10.44.02
Nello zip ho allegato due file exel uno
ori2 = Questo contiene la tabella originale prima della modifica della macro
modificato= Questa contiene la tabella che vorrei se avessi un a macro in grado di farlo..

Ora gli dovuti spostare a mano numero per numero .

è possibile fare la macro che metta sotto uscita tutti numeri usciti lo stesso numero di volte e ottenere la tabella uguale a quella del file modificato..
Grazie mille..
spero che i due file chiariscano quello che devo fare

miciomao
07-09-2006, 09.35.23
ao ti mando la parcella a casa
sono 2 gg che lavoro per te

sei pronto ?

a dimmi una cosa, il foglio excel ti arriva così propio?

ken87
07-09-2006, 13.16.51
il foglio di partenza che ti ho mandato e gia modifificato da un macro. infatti il foglio di partenza aveva piu colonne.solo due erano da prendere in conderiazione poi da ordinare e altre cosettine. se ti porta via troppo tempo non preoccuparti pensavo se fosse meno complesso.. vedi tu.. comunque grazie mille di tutto aiuto che mi stai dando...

comunque il risultato che che dovevo ottenere e quello uguale al secondo foglio exel...

miciomao
07-09-2006, 14.12.38
soluzione in vba

incolli i valori e premi elabora

miciomao
07-09-2006, 14.32.28
soluzione con formule matriciali (no vba)

purtroppo mi sono accorto che ha dei limiti questa:

il range e le definizioni uscite e numero devono essere reinserite ogni volta che la lunghezza delle colonne con valori varia.

la scarterei :)

ken87
07-09-2006, 15.27.18
la seconda soluzione non l'ho capita.. la prima se prendo la tabella che ti ho postato, e e creo un modulo e copio il codice sorgente che mi hai passato in che modo poi riesco a far girare la macro.
Saro piu chiaro la macro che mi hai piassato avrei biscogno di applicarla a qualsiasi tabella exel che i campi uscite e numeri come la tabella originale.. farla girare e ottenere tabella modificata. Il tuo codice si aggunge al codice che ho gia creato per far alte modifiche..
Spero di essere stato chiaro, se no fammelo sapere...
Ti rigrazio infinitivamente...

miciomao
07-09-2006, 15.45.20
ho salvato il codice su un modulo non nei fogli
fai alt+f11 selezioni Modulo1 con il tasto dx e fai esporta
chiudi
apri il file excel in cui vuoi applicare le funzioni alt+f11 importa modulo,
ora vai alla prima sub

Sub START() (qui dai un invo)

qui incolli il tuo codice

chiudi vba e sei apposto

ricorda naturalmente di copiarti il tasto "ELABORA" (click dx copia) poi incollalo nel tuo file excel

azz mi stavo dimenticando..... attenzione per lavorare i 2 fogli devono chiamarsi necessariamente (a meno di rinomina nelle sub) TABELLA_ORIGINALE e ELABORAZIONI (foglio nascosto)
l'ultimo è di vitale importanza xchè racchiude formule necessarie.

Ti consiglio vivamente di applicare le modifiche/aggiunte al mio foglio, se cerchi di replicarlo dovrai necessariamente capirne i vincoli.

ken87
08-09-2006, 09.55.32
faro cosi .. grazie infintivamente del aiuto che mi hai dat0 :) :) :act:
solo una cosa come,e si fa a dare visibilita alla pagina nascoscta?

miciomao
08-09-2006, 10.18.36
io l'ho nascosta per i motivi che ben potrai immaginare, ci sono riferimenti importanti per il processo li ed è meglio non rischiare.

Per nasconderle/scoprirle: Formato->Foglio :)

ken87
08-09-2006, 10.26.46
si potrebbe dire alla macro di cerere la pagina come prima istruziuzione, poi gli dico di creare poi segue il tuo codce?
Lo resa vibile usando il tuo codice...
comunque grazie...

miciomao
08-09-2006, 10.32.11
si
nella prima sub chiamata start
all'inizio e alla fine c'è il codice che scopre e poi nasconde il foglio