Hardware Upgrade Forum

Hardware Upgrade Forum (https://www.hwupgrade.it/forum/index.php)
-   Programmi e Utility (https://www.hwupgrade.it/forum/forumdisplay.php?f=37)
-   -   Excel: problematiche e soluzioni (https://www.hwupgrade.it/forum/showthread.php?t=2102242)


Shinleuch 24-06-2016 19:05

Salve a tutti, sono in fase di produzione del mio primo file con VB su Excel, ma non riesco proprio a salvare il file con nome usando la data odierna.

Sub SaveWithData()

Range("A3").Select
ActiveWorkbook.SaveAs Filename:="C:\Users\PHS1\Desktop\SWO.xlsx", FileFormat _
:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
End Sub

Questo e' il codice che uso per il normale "salva con nome". Cio' che mi serve e' un file che si chiami SWO(yyyy-mm-dd).xlsx

Grazie mille in anticipo

Raffaele53 26-07-2016 20:35

Sarà, mà se nel file c'è codice si chiama Xlsm

Option Explicit
Sub salva() 'uso nomi semplici in Italiano e dichiaro le variabili
'data = 1/1/2016 >>> purtroppo non puoi salvare file con simboli = "/"
Dim Aa, Mm, Gg, s, sm ' s di prova
Aa = year(Date) ' numero anno
Mm = Month(Date) ' numero mese
Gg = Day(Date) ' numero giorno
'OK faccio una stringa = s
s = Aa & "-" & Mm & "-" & Gg & " SWO.xlsx" 'significa aa-mm-gg SWO.xlsx
sm = Aa & "-" & Mm & "-" & Gg & " SWO.xlsx" 'significa aa-mm-gg SWO.xlsm
'però contiene macro e non è .xlsx (allora dovrebbe essere .xlsm)
ActiveWorkbook.SaveAs Filename:="C:\Users\PHS1\Desktop\" & s, FileFormat _
:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWorkbook.SaveAs Filename:="C:\Users\PHS1\Desktop\" & sm, FileFormat _
:=xlOpenXMLWorkbook, CreateBackup:=False
'uno dei due dovrebbe averlo salvato.
'a riguardo chiuderlo è uguale se medesimo .xlsx, oppure è facile però...
End Sub

+Benito+ 28-07-2016 18:19

Ho un problema: sono passato a excel 2007 (no comment please) e in questa versione non mi funziona più lo scroll da rotellina mentre ho il puntatore cliccato nella barra della formula, una cosa scomodissima.
C'è modo di evitare questo problema?
Ho un MX510 ed uso windows 7.

EDIT: ho anche un altro problema, quando sono nella barra della formula il tasto laterale del mouse che ho programmato come CANC non fa niente, mentre normalmente se clicco su una cella e lo premo mi cancella il contenuto.

Oltretutto i file di lavoro che utilizzo contengono dei moduli. Aprendoli con il 2007 (dal 2003 con cui erano stati creati), mi appaiono un sacco di #NOME?. Nel dubbio ho inserito nuovamente i moduli con il codice ma niente, non funziona più anche con le macro attivate.

fracarro 21-08-2016 11:56

incolla "formattato" tramite macro
 
Salve a tutti,
avrei bisogno di una mano per la creazione di una macro (purtroppo non conosco VBA). Solitamente io copio del testo da un file e lo incollo in excel utilizzando il wizard "Usa impostazione guidata testo..." per fare in modo che le parole nel testo vengano separate in base alle tabulazioni ed agli spazi.

Poichè l'operazione è ripetitiva e alla lunga noiosa, è possibile creare una macro che faccia questa operazione? (Se possibile il testo dovrebbe essere incollato a partire dalla cella che seleziono io e non una cella predefinita)

Ho provato a registrare una macro mentre eseguo le operazioni ma non funziona. In pratica effettua la copia del testo senza considerare gli spazi (forse per default excel usa le tabulazioni per dividere il testo).

Uso excel 2016 per Mac.

EDIT. Leggendo su internet sono riuscito a copiare una serie di funzioni che alla fine creano un array VBA multidimensionale che contiene le parole separate correttamente. Non sono riuscito a copiare direttamente l'array nel foglio ma ho dovuto farlo cella per cella. Comunque ho risolto. Di seguito il codice (sicuramente migliorabile).

EDIT2 Ho risolto anche il problema della velocità. Era sufficience disabilitare temporaneamente (con il comando Application.Calculation = xlCalculationManual) i calcoli che excel effettuava ogni volta che un nuovo valore veniva copiato in una cella. Di seguito il codice aggiornato.

Codice:

Sub incollaPerTABeSPAZI()
'
' incollaPerTABeSPAZI Macro
' incolla il testo formattato in base ai TAB e agli spazi
'
' Scelta rapida da tastiera: Opzione+Cmd+v
'
    Dim objData As New MSForms.DataObject
    Dim strText As String
    Dim text_string As String
    Dim stringaRipulita As String
    Dim WrdMatrix As Variant
    Dim myCell As Range

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    objData.GetFromClipboard
    strText = objData.GetText()

    stringaRipulita = CleanString(strText)

    WrdMatrix = SplitSplit(stringaRipulita)

    DumpAry WrdMatrix

    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    Application.Calculate

End Sub


Public Function SplitSplit(ByRef Delimited As String) As Variant
    Dim Rows() As String
    Dim AryOfArys As Variant
    Dim I As Long

    Rows = Split(Delimited, vbNewLine)
    ReDim AryOfArys(UBound(Rows))
    For I = 0 To UBound(Rows)
        AryOfArys(I) = Split(Rows(I), " ")
    Next
    SplitSplit = AryOfArys
End Function

Public Function CleanString(strSource As String) As String
    On Error GoTo CleanStringErr

    ' convert tabs to spaces first
    strSource = Replace(strSource, vbTab, " ")

    ' convert all CRLFs to spaces
    ' strSource = Replace(strSource, vbCrLf, " ")

    ' Find and replace any occurences of multiple spaces
    Do While (InStr(strSource, "  "))
        ' if true, the string still contains double spaces,
        ' replace with single space
        strSource = Replace(strSource, "  ", " ")
    Loop

    ' Remove any leading or training spaces and return
    ' result
    CleanString = Trim(strSource)
    Exit Function

CleanStringErr:
    ' Insert error-handling code here
End Function


Public Sub DumpAry(ByRef AryOfArys As Variant)
    Dim Row As Long, Col As Long
    Dim strg As String
    Dim myCell As Range
    Dim counter As Long

    Set myCell = ActiveCell
    Col = 0
    For Row = 0 To UBound(AryOfArys)
        For Col = 0 To UBound(AryOfArys(Row))
          ' strg = strg & " - " & AryOfArys(Row)(Col)
        myCell(Row + 1, Col + 1) = AryOfArys(Row)(Col)
        Next
        ' Debug.Print strg
        ' strg = ""
    Next

errHandler:
  Application.ScreenUpdating = True

End Sub


blengyo 28-08-2016 17:53

ciao ragazzi, uso excel solo nelle sue funzioni basilari e non lo conosco in profondità, vorrei chiedervi se secondo voi è possibile, a partire da una semplice tabella con il calendario della partite in cui nella prima colonnaci sono le date e nella prima riga le squadre, generare un csv importabile su google di tutte le partite...?

Spero di essermi spiegato! Grazie mille

antoniosa 22-09-2016 14:19

salve,

ho 2 fogli di excel di cui uno contiene un sottinsieme delle righe dell'altro.

Come posso fare per sapere quali sono le righe che il primo ha in più rispetto all'altro?

grazie,
Antonio

tomas79 27-09-2016 09:12

Buongiorno a tutti/e, vorrei un vostro aiuto se possibile.
In un foglio di lavoro Excel, nell'intervallo B6:B400 voglio che gli utilizzatori possano inserire solo numeri con 2 cifre decimali, in caso contrario vorrei far comparire un messaggio pop up che spieghi l'errore fatto.
Cerco di spiegarmi in modo più chiaro possibile.
Voglio che i miei colleghi inseriscano solo numeri con due cifre decimali ergo:
- se inseriscono 21 devo ottenere 21,00
- se inseriscono 21,1 devo ottenere 21,10
- se inseriscono 21,124 devo ottenere 21,12
- se inseriscono 21,126 devo ottenere 21,13 (quindi arrotondando in modo corretto)
E' possibile?
Grazie a chi mi vorrà aiutare.

PS: uso excel 2010

Daniele1984 27-09-2016 12:38

Quote:

Originariamente inviato da tomas79 (Messaggio 44066594)
Buongiorno a tutti/e, vorrei un vostro aiuto se possibile.
In un foglio di lavoro Excel, nell'intervallo B6:B400 voglio che gli utilizzatori possano inserire solo numeri con 2 cifre decimali, in caso contrario vorrei far comparire un messaggio pop up che spieghi l'errore fatto.
Cerco di spiegarmi in modo più chiaro possibile.
Voglio che i miei colleghi inseriscano solo numeri con due cifre decimali ergo:
- se inseriscono 21 devo ottenere 21,00
- se inseriscono 21,1 devo ottenere 21,10
- se inseriscono 21,124 devo ottenere 21,12
- se inseriscono 21,126 devo ottenere 21,13 (quindi arrotondando in modo corretto)
E' possibile?
Grazie a chi mi vorrà aiutare.

PS: uso excel 2010

Se si tratta solo di un discorso di visualizzazione basta che formatti il testo delle caselle con visibili due cifre decimali. In questo modo indipendentemente dal numero inserito nella casella vedrai solamente due cifre decimali con il corretto arrotondamento (in altre parole il numero nella casella sarà 21.126 ma tu vedrai 21.13). Se invece ti serve proprio che nella casella ci sia 21.13 allora secondo me il modo più facile per farlo è che aggiungi una colonna nella quale inserisci i numeri che vuoi (ad esempio 21.126 nella casella B4) e poi usi la funzione ARROTONDA() nella colonna a fianco arrotondando il numero considerando i decimali che ti servono; avrai quindi ad esempio in C4 ARROTONDA(B4;2) e ti comparirà 21.13.

tomas79 28-09-2016 09:29

Ciao,
si l'uso di arrotonda l'avevo fatto ma i colleghi/superiori me lo hanno bocciato... alternative?
Grazie mille.

Daniele1984 28-09-2016 09:51

Quote:

Originariamente inviato da tomas79 (Messaggio 44070008)
Ciao,
si l'uso di arrotonda l'avevo fatto ma i colleghi/superiori me lo hanno bocciato... alternative?
Grazie mille.

Forse si può cercare di fare col convalida dati ma non ne sono sicuro. Sicuramente ci sarà qualche altro metodo di farlo ma al momento non mi viene in mente niente.

limpid-sky 29-09-2016 22:35

Quote:

Originariamente inviato da tomas79 (Messaggio 44070008)
Ciao,
si l'uso di arrotonda l'avevo fatto ma i colleghi/superiori me lo hanno bocciato... alternative?
Grazie mille.

Create a Prompt Message Explaining the Type of Data Allowed in a Cell
https://support.microsoft.com/en-us/kb/211485

toddy91 06-10-2016 20:19

Ciao,
Ho un problema banale.
Ho un PC in azienda al quale non riesco a modificare l'orario del sistema.
Il PC mi serve per lavorare in Excel per registrare cronologicamente eventi ed accessi.
Ho la necessità su excel di creare una formula che sottrae automaticamente 6 minuti all'orario appena inserito in quella cella.

Esempio:
In D1 inserisco l'ora corrente con CTRL-SHIFT-. ed automaticamente vorrei che sempre in D1 vengano sottratti 6 minuti e che il risultato appaia sempre in D1.

Grazie.

Trial4life 06-10-2016 21:51

Ciao a tutti,
mi trovo di fronte al seguente problema:
− Ho un foglio di lavoro ("Foglio1") che contiene una tabella con dei dati. Ad ogni Nome, è associata una serie di dati, come vedete nella figura.



− Nell'altro foglio di lavoro ("Foglio2"), ho una cella con elenco a discesa, creato tramite "Convalida dati", in modo da avere tutti i nomi presenti nell'altro foglio come selezionabili da elenco a discesa.
Sotto all'elenco a discesa, sono incolonnate le etichette dei vari valori ("Valore 1", "Valore 2", etc.), che corrispondono alle etichette messe per riga nel foglio2.



Accanto a questo nome selezionabile, c'è una colonna "Valori".
Ho bisogno di fare in modo che tutti i valori sottostanti (quelli in rosso) si "sincronizzino", leggendoli dal foglio1, con quelli associati al Nome selezionato.

Come potrei fare?

Grazie in anticipo.

andfan79 12-10-2016 13:34

Funzione logica excel per fantacalcio
 
Salve a tutti.
Mi potete aiutare a realizzare una funzione da poter utilizzare per l'asta del fantacalcio?
Mi servirebbe di fare un file excel, dove se io scrivo una lista di giocatori con una cifra, accanto automaticamente mi compare scritto il risultato di ogni singola offerta.
Così da potter ottenre uno schema come ad esempio questo:

Mario 50 "rifiutata"
Andrea 80 "accettata"
Alfio 100 "accettata"

Flavio 10 "accettata"
Andrea 30 "rifiutata"
Mario 50 "rifiutata"

Quindi la funzione logica dovrebbe tener conto di alcuni criteri, che di seguito vi vado a specificare.
1. Se i nomi dei giocatori sono differenti, mi dovrà restituire "accettata" a prescindere da quale sia il valore della cifra accanto.
2. Ma se i nomi dei giocatori sono uguali (ad es. Andrea), mi dpovra accettare solo quello con il valore maggiore.
3. Se invece ci sono nomi e cifra uguali allora dovrà restituire "rifiutata" per entrambi.
Spero qualcuno riesca ad aiutarmi e di essere stato abbastanza chiaro.

Grazie.

Raffaele53 17-10-2016 17:26

@andfan79
Se Ti va bene per 100 righe, casomai modifica le formule
In A1 =SE(B1="";"";B1&C1)
In B1 srivi il nome
In C1 scrivi il prezzo
In D1 metti =SE(A1="";"";SE(CONTA.SE(A$1:A$100;A1)>1;"rifiutata";SE(CONTA.SE(B$1:B$100;B1)=1;"accettata";SE(MATR.SOMMA.PRODOTTO((B$1:B$100=B1)*(C$1:C$100))/MATR.SOMMA.PRODOTTO((B$1:B$100=B1)*1)>C1;"rifiutata";"accettata"))))
Ps le formule in A1 e D1 le trascini giù

@Trial4life
Se foglio1 + tabella in C3:F6 è giusto
Se tabella in foglio2 in B3:C6 è giusto
In C4 =INDIRETTO(INDIRIZZO(CONFRONTA($B$3;Foglio1!C$1:C$7;0);CONFRONTA(B4;Foglio1!A$4:F$4;0);;;"Foglio1")) e trascini giù

roberto1 19-10-2016 17:13

ho un problema diverso con office 2010, mia moglie scrive le date gg.m.hh nella prima riga/colonna/cella e le annotazioni in altre celle, salva sul desktop il file, me lo invia per e-mail, lo apro con Excel 2010 ma al posto della data vi sono degli astag ########, se vi clicco sopra con il mouse vedo la data/e corretta/e ma devo riscriverle tutte le volte, ci sono delle impostazioni da cambiare in Excel ? o qualche agg. ha modificato la suite office ? grazie

sbaffo 19-10-2016 19:24

Quote:

Originariamente inviato da roberto1 (Messaggio 44136431)
ho un problema diverso con office 2010, mia moglie scrive le date gg.m.hh nella prima riga/colonna/cella e le annotazioni in altre celle, salva sul desktop il file, me lo invia per e-mail, lo apro con Excel 2010 ma al posto della data vi sono degli astag ########, se vi clicco sopra con il mouse vedo la data/e corretta/e ma devo riscriverle tutte le volte, ci sono delle impostazioni da cambiare in Excel ? o qualche agg. ha modificato la suite office ? grazie

Ma tua moglie usa anche lei office 2010? Altrimenti può essere un problema di incompatibilità con altre versioni di office (strano, ma è già successo coi colori) o con libre/open office/altri.

Scusa la domanda, ma di solito quei cancelletti compaiono quando la cella è tropo stretta per vedere tutto il numero, hai provato ad allargarla? :D (per allargamento automatico doppio click sulla linea che separa la prima e la seconda colonna)

Altra idea, può essere che il tuo excel usi di serie un formato data diverso, prova a smanettare sul formato cella e vedi se succede qualcosa...

roberto1 19-10-2016 19:41

:doh: grazie della risposta, si mia moglie ha la stessa vers. di office, ho seguito il tuo consiglio e ho allargato la cella con le date e sono comparse sul mio foglio di calcolo, il "problema" erano le mie celle troppo strette. ti ringrazio di nuovo per l'ottimo suggerimento. :cincin: :cincin:

sbaffo 20-10-2016 22:22

Quote:

Originariamente inviato da roberto1 (Messaggio 44136875)
:doh: grazie della risposta, si mia moglie ha la stessa vers. di office, ho seguito il tuo consiglio e ho allargato la cella con le date e sono comparse sul mio foglio di calcolo, il "problema" erano le mie celle troppo strette. ti ringrazio di nuovo per l'ottimo suggerimento. :cincin: :cincin:

Allora sei proprio niubbo! :D
40 flessioni per penitenza :D, ma con tua moglie sulla schiena :Prrr:

roberto1 21-10-2016 15:58

:( a....z 40 flessioni con mia moglie sulla schiena... mi rompo non per il peso di lei (56kg) ma per la mia schiena già a pezzi e 63 anni sul groppone, 40 colpi di c..z... mi starebbero meglio;) . grazie di nuovo :cincin:


Tutti gli orari sono GMT +1. Ora sono le: 06:57.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Hardware Upgrade S.r.l.