|
Login
  • Page:
  • 1

TOPIC: Richiamo automatico valori/testo

Richiamo automatico valori/testo 5 years 9 months ago #9252

Buonasera,
In passato ho avuto bisogno di una macro che qualcuno gentilmente mi ha preparato ma ora mi si presentano problemi nuovi e quindi io (conoscitore di excel poco oltre la media) torno a chiedere il vostro aiuto.
Allego un file esemplificativo per farvi comprendere a pieno il problema

File Attachment:

File Name: prova.xlsm
File Size: 22 KB



Come potrete vedere nei fogli 2,3 e 4 ci sono delle tabelle nella medesima posizione contenenti diverse entrate. Nella colonna "quantità" alcuni valori sono inseriti manualmente e alcuni derivanti da formule (ma non credo cambi niente).

La macro che viene usata nel foglio dovrebbe lavorare nel foglio "riepilogo" e creare una tabella appunto riepilogativa, tralasciando in automatico le celle vuote (come accade nel foglio 3 vuoto).

I miei quesiti sono i seguenti:
- lavorando la macro mi riporta anche evidenziato in giallo l'intestazione della tabella (presumo del foglio 3) non so perchè
- da quanto ho capito la macro lavora sugli ingressi testuali, ma sarebbe ancora meglio se escludesse le voci che non hanno una quantità (nell'esempio, nel foglio riepilogo la voce "ferro" non dovrebbe risultare, in quanto sprovvista di quantità)
- Nel foglio 2 la voce catrame ha due formattazioni diverse (il boh rosso tra parentesi) e nel riepilogo viene riportata tutta con il nero standard.

Spero di essere stato chiaro (non è mai facile).
Grazie in anticipo a tutti
Last Edit: 5 years 9 months ago by testadimissile.
The administrator has disabled public write access.

Richiamo automatico valori/testo 5 years 9 months ago #9253

  • lorenzo1957
  • lorenzo1957's Avatar
  • OFFLINE
  • Platinum Boarder
  • Posts: 849
  • Thank you received: 59
  • Karma: 51
Ciao, il seguente codice, da sostituire al precedente, dovrebbe risolvere il tuo problema:
' inizio codice
Option Base 1

Sub riepilogo()
Dim MioFoglio As Variant
MioFoglio = Array("Foglio2", "Foglio3", "Foglio4")
Ucol = "C"
Application.ScreenUpdating = False
Sheets("riepilogo").Range("B3", Ucol & "10000").Clear
For CT = 1 To 3
Sheets(MioFoglio(CT)).Select
uriga = Range("B10000").End(xlUp).Row '
If uriga > 2 Then 'era: If Uriga >= 2 Then
Range("B3", Ucol & uriga).Select
Selection.Copy
'Range("a1").Select 'inutile
Sheets("riepilogo").Select
Range("B10000").End(xlUp).Offset(1, 0).Select
'neutralizzati i seguenti due incolla: il primo i formati, il secondo i valori e messo incolla tutto (ATTENZIONE anche le formule)
'Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End If
Next CT
Sheets("riepilogo").Select
'aggiungo eliminazione riga se cella C vuota.
uriga = Range("C10000").End(xlUp).Row
Range("c3", "C" & uriga).Select
For Each CL In Selection
If CL.Value = "" Then
CL.EntireRow.Delete
End If
Next CL
Sheets("riepilogo").Range("B3").Select
Application.ScreenUpdating = True
End Sub
'fine codice
Dico in parte perché, come vedrai, il codice copia/incolla anche le formattazioni.
Pertanto se le celle b2 e c2 sono bordate utilizzando le celle b3 e c3, ti compariranno delle righe bordate anche nel foglio riepilogo.
Fa attenzione che se ci sono formule ora copia formule... con tutte le conseguenze.

Ciao, Lo
Last Edit: 5 years 9 months ago by lorenzo1957.
The administrator has disabled public write access.

Richiamo automatico valori/testo 5 years 9 months ago #9254

Ciao Lorenzo,
grazie molte per la pronta risposta.
Ho provato ad adeguare il tuo codice al mio foglio ma non riesco a farlo funzionare.
O meglio, non riesco a capire perchè, funziona per alcune righe si e per altre no (e questa incoerenza mi fa diventare matto).
Non funzionasse proprio capirei, ma qualche riga vuota la esclude mentre altre le mette.
Non capisco.

Ti allego il file originale che ho provato a modificare dopo le tue indicazioni


File Attachment:

File Name: ProjectInventory_NEW.xlsm
File Size: 65 KB
The administrator has disabled public write access.

Richiamo automatico valori/testo 5 years 9 months ago #9255

  • lorenzo1957
  • lorenzo1957's Avatar
  • OFFLINE
  • Platinum Boarder
  • Posts: 849
  • Thank you received: 59
  • Karma: 51
OK.
cambiamo metodo.
vedi allegato.

File Attachment:

File Name: Copia_ProjectInventory_NEW.xlsm
File Size: 66 KB

ciao, Lo
The administrator has disabled public write access.

Richiamo automatico valori/testo 5 years 9 months ago #9263

Ora verifico bene ma sembra funzionare !!!! :)

Giusto per capire, come mai il codice, così come era precedentemente non funzionava?

comunque sei un grande

Grazie mille
The administrator has disabled public write access.

Richiamo automatico valori/testo 5 years 9 months ago #9264

  • lorenzo1957
  • lorenzo1957's Avatar
  • OFFLINE
  • Platinum Boarder
  • Posts: 849
  • Thank you received: 59
  • Karma: 51
testadimissile wrote:
come mai il codice, così come era precedentemente non funzionava?
Nella fretta avevo pensato ad un banale ciclo tipo questo:
Sub a()
Range("c1", "C20").Select
For Each CL In Selection
If CL.Value = "" Then
CL.Value = "XXX" 'EntireRow.Delete
End If
Next CL
End Sub

Che funziona se, come da esempio modificato, sostituisci una cella vuota con il valore XXX.
Non è invece compatibile con un elimina riga, in quanto dopo aver cancellato una riga nel range C1:C20, il foglio o meglio la tabella trasla verso l'alto e in basso nel range C1:C20 entra una cella vuota da cancellare a sua volta. Il ciclo (nell'esempio di 20 valutazioni) può quindi terminare prima di aver completato l'eliminazione righe vuote.

Ciao, Lo
Last Edit: 5 years 9 months ago by lorenzo1957.
The administrator has disabled public write access.
  • Page:
  • 1
Time to create page: 0.655 seconds