Il problema dei 3 corpi: Attraverso continenti e decadi, cinque amici geniali fanno scoperte sconvolgenti mentre le leggi della scienza si sgretolano ed emerge una minaccia esistenziale. Vieni a parlarne su TopManga.
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

MATR.SOMMA.PRODOTTO con Nomi definiti

Ultimo Aggiornamento: 11/05/2016 00:17
Post: 44
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Junior
2010
OFFLINE
05/05/2016 15:41

Ciao a tutti.
Ho provato ad usare dei nomi definiti nella formula in A3 ma non ottengo il risultato aspettato.
https://www.dropbox.com/s/nyn9ix29ovnsxrg/Hlp_Rip1_forum.xlsm?dl=0

Mi aiutate a capire che errore commetto.

Grazie
BG66
Excel 2010
Post: 609
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Senior
365
OFFLINE
05/05/2016 17:52

Ciao
hai la colonna delle lettere con degli spazi

seleziona la colonna vai in sostituisci
nella casella trova
inserisci uno spazio con la barra spaziatrice
nella casella
sostituisci con

non mettere niente

clicca su sostituisci tutti

e si sistema la formula
ciao
Post: 44
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Junior
2010
OFFLINE
05/05/2016 18:20

Ciao Federico,
provvedo subito.

Ho provato a fare una macro per risolverlo (...ed imparare) ma non funziona hai voglia di correggerla?
  
Public Sub SpazioVuoto()     
Dim Sh As Worksheet     
Dim LRiga As Long     
Dim Lng As Long     
Set Sh = ThisWorkbook.Worksheets("DbfR1")     
With Sh     
LRiga = .Range("I" & .Rows.Count).End(xlUp).Row     
For Lng = 1 To LRiga     
.Range("I" & Lng).Value = _     
Replace(.Range("I" & Lng).Value, " ", "")     
Next     
End With     
Set Sh = Nothing     
End Sub


Grazie
[EDIT] Correggo: molto lentamente (quasi 5 minuti???) ma la macro fà il suo dovere.
[Modificato da BG66 05/05/2016 18:49]
BG66
Excel 2010
Post: 611
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Senior
365
OFFLINE
05/05/2016 18:50

ciao
ho visto che hai corretto le A con la I

l'errore era che avevi fatto un misto [SM=x423030]

questa da registratore è veloce

Sub vuoti()
Columns("I:I").Select
Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Range("A1").Select
End Sub



quella che hai proposto è lentissima

ciao
in qualsiasi caso conviene fare con le funzioni di excel
senza appesantire i file.
Post: 349
Registrato il: 02/08/2015
Utente Senior
Excel 2013
OFFLINE
05/05/2016 21:34

Ciao a tutti,

@BG66

La formula non funzionava in quanto non trovava alcuna corrispondenza nella colonna I del foglio "DbfR1". Infatti in quella colonna ci sono degli spazi aggiuntivi dopo la lettera.
Quindi, o elimini tutti gli spazi superflui della colonna I oppure utilizzi la funzione ANNULLA.SPAZI nella formula.

Ho aggiunto un nome definito per la colonna Q del foglio "DbfR1" (ValoriDB).

P.S.
Non conviene mai prendere in considerazione l'intera colonna perchè il file e quindi il calcolo si appesantirebbe enormemente. Utilizza la funziona SCARTO e CONTA.VALORI nei nomi definiti per considerare solamente le celle con dei valori all'interno.

Ad esempio, per il nome definito "DataDB" la formula sarebbe questa:

=SCARTO(DbfR1!$B$1;;;CONTA.VALORI(DbfR1!$B:$B))

Per quanto riguarda la formula finale, nella cella A3 del foglio "R.1" scrivi:

=MATR.SOMMA.PRODOTTO((DataDB=$A3)*(ANNULLA.SPAZI(ImpiantoDB)=C$1)*ValoriDB)

Ti riallego il file...
[Modificato da cromagno 05/05/2016 21:35]


"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
Post: 45
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Junior
2010
OFFLINE
06/05/2016 10:09

Grazie Cromagno,
la tua formula è super.

Un'ultimo aiuto.
1) Nella macro chiamata principale, io importo un foglio del DB esterno ma vorrei che quando il foglio importato "DbfR1" è già esistente quest'ultimo venga sovrascritto e non crearne un secondo come succede attualmente.
Inoltre dovrebbe chiudere il file origine "M:\DrPI\GambR1.xls".
2) In X115 il valore decimale 102 sia espresso in hh:mm ma se provo a formattare la cella con personalizzato ottengo 00:00

https://www.dropbox.com/s/qk4ax5ecadx0l3f/Hlp_Rip1%2B_forum.xlsm?dl=0


Sub Principale()     
MsgBox "Inizio della Macro_Base"     
Call Copia_foglioR1     
Call Converti_DATA_R1     
Call sostituisci_puntoR1     
MsgBox "Fine della Principale" 
End Sub  
Sub Copia_foglioR1() 
Workbooks.Open Filename:="M:\DrPI\GambR1.xls" Worksheets("DbfR1").Copy After:=Workbooks("Hlp_Rip1+.xlsm").Worksheets("Menu")      
MsgBox "1111 E' stata eseguita la Copia R1" 
End Sub 
Sub Converti_DATA_R1()     
Dim UR As Long, I As Long          
UR = Cells(Rows.Count, 2).End(xlUp).Row     
On Error GoTo 1     
For I = 2 To UR         
Cells(I, "B") = CDate(Cells(I, "B")) * 1     
Next I     
Range("B1:B" & UR).NumberFormat = "dd/mm/yyyy"     
Exit Sub      1     
MsgBox "ATTENZIONE: la cella  'B" & I & "'  contiene il valore  '" & Cells(I, "B") & "'  che non è una data valida", vbCritical       MsgBox "2222 E' stata eseguita la conversione data" 
End Sub  
Sub sostituisci_puntoR1() 
' ' sostituisce i punti con i due punti '     
Columns("C").Select     
Selection.Replace What:=".", Replacement:=":", LookAt:=xlPart, _         
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _         ReplaceFormat:=False         
Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _  SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _  ReplaceFormat:=False  

MsgBox "E' stata eseguita la conversione orario"
End Sub


Grazie.
PS: per inserire la macro nel forum uso il tasto CODE ma poi devo ricreare con invio i giusti a capo. E' corretto l'utilizzo di quel tasto?
[EDIT] Aggiunto allegato
[Modificato da BG66 06/05/2016 15:40]
BG66
Excel 2010
Post: 613
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Senior
365
OFFLINE
06/05/2016 19:07

Ciao

per i tempi sostituisci la formula
tempiDB

delle formule con


=(INT((SCARTO(DbfR1!$P$1;;;CONTA.VALORI(DbfR1!$P:$P))/60))&":"&((SCARTO(DbfR1!$P$1;;;CONTA.VALORI(DbfR1!$P:$P))/60)-INT((SCARTO(DbfR1!$P$1;;;CONTA.VALORI(DbfR1!$P:$P))/60)))*60)



e formatta la colonna come
hh:mm

per la macro copia


Sub Copia_foglioR1()

Workbooks("Hlp_Rip1+_forum.xlsm").Worksheets("Menu").Select

Cells.Select
Selection.ClearContents
Workbooks.Open Filename:="M:\DrPI\GambR1.xls"
Worksheets("DbfR1").Copy After:=Workbooks("Hlp_Rip.xlsm").Worksheets("Menu")
Workbooks("GambR1.xls").Close
End Sub



non ho tempo di testartelo cambiando i parametri ma dovrebbe andare
ciao
[Modificato da federico460 06/05/2016 19:49]
Post: 614
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Senior
365
OFFLINE
06/05/2016 20:16

La macro crea un foglio sempre con lo stesso nome mmmmm!

io userei il registratore di macro e farei così




Sub Macro1()
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DisplayAlerts = False
Sheets("Menu").Select
Cells.Select
Selection.ClearContents
Workbooks.Open Filename:= _
"C:\Users\Gianfranco\Documents\Forum excel\C.VERT E AGGREGA.xlsm"
Cells.Select
Selection.Copy
Windows("Hlp_Rip1+_forum.xlsm").Activate
ActiveSheet.Paste
Windows("C.VERT E AGGREGA.xlsm").Activate
ActiveWorkbook.Close SaveChanges:=False
Range("A1").Select
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub



ora basta scremare la macro e vedi che è meglio.

ciao
Post: 46
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Junior
2010
OFFLINE
07/05/2016 05:19

Ciao Federico,
la formula funziona benissimo. [SM=g27811]
Lunedi in ufficio farò il test sul funzionamento della macro.

Grazie ancora.
BG66
Excel 2010
Post: 47
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Junior
2010
OFFLINE
09/05/2016 13:20

Ciao Federico,
adattata e provata la macro "del registratore" ma importa i dati nel foglio Menu e non in quello successivo DbfR1.

Attendo tue, grazie
BG66
Excel 2010
Post: 48
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Junior
2010
OFFLINE
10/05/2016 19:54

Ciao a tutti,
qualcuno mi aiuta con una dritta ? [SM=x423052]

Grazie
BG66
Excel 2010
Post: 618
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Senior
365
OFFLINE
11/05/2016 00:17

Senti onestamente non capisco
in che foglio ti interessa il trasferimento,
in menu o in DbfR1
8 il foglio menu l'ho trovato nel file di Cromagno ( che saluto)

in qualsiasi caso fai una copia del tuo file e con il registratore di macro
fai tutti i passaggi.


Sub Macro1()
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DisplayAlerts = False
Sheets("DbfR1").Select
Cells.Select
Selection.ClearContents
Workbooks.Open Filename:= _
"C:\Users\Gianfranco\Documents\Forum excel\C.VERT E AGGREGA.xlsm"
Cells.Select
Selection.Copy
Windows("Hlp_Rip1+_forum.xlsm").Activate
ActiveSheet.Paste
Windows("C.VERT E AGGREGA.xlsm").Activate
ActiveWorkbook.Close SaveChanges:=False
Range("A1").Select
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub


non riesco più a capacitarmi con i nomi dei fogli [SM=x423023]

comunque
Sub Macro1()
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DisplayAlerts = False
Sheets("DbfR1").Select ' seleziona il foglio da cancellare
Cells.Select
Selection.ClearContents
Workbooks.Open Filename:= _
"C:\Users\Gianfranco\Documents\Forum excel\C.VERT E AGGREGA.xlsm" ? apri il tuo file da dove prendere i dati
Cells.Select
Selection.Copy
Windows("Hlp_Rip1+_forum.xlsm").Activate
ActiveSheet.Paste ' copia il tutto nel foglio che ti interessa
Windows("C.VERT E AGGREGA.xlsm").Activate
ActiveWorkbook.Close SaveChanges:=False
'Chiudi il file di prelievo
Range("A1").Select
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub
[Modificato da federico460 11/05/2016 00:22]
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 08:47. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com