Login Registrati
Stai vedendo 20 articoli - dal 1 a 20 (di 20 totali)
  • Autore
    Articoli
  • #34253 Score: 0 | Risposta

    roberto21
    Partecipante
      4 pts

      In una tabella di database sotto sqlexpress, un campo viene riempito con la stringa

      =concatenate("string1)";Char(10);"String2")

      la tabella viene quindi esportata in excel con un semplice CopyRecordSet.  Tutto ok, ma il campo di cui sopra è riportato fedelmente nella cella corrispondente e NON VIENE calcolato. Non si riesce a farlo calcolare neanche selezionandolo e cliccando F9. L'unico modo per farlo calcolare è editandolo: anche senza modificare nulla, basta entrare col cursore nella stringa e premere Invio e la formula viene correttamente calcolata. Naturalmente, questa non può essere una soluzione: se scrivo quella stringa, è perchè la vorrei eseguita automaticamente. C'è qualche regola per cui stringhe simili importate da sql non vengono interpretate come formule?

      Nota: la cella excel è formato General (ho provato anche number, non cambia niente). Ovviamente, excel è configurato per ricalcolo automatico

      Grazie per qualunque idea o sughgerimento

      #34254 Score: 0 | Risposta

      Oscar
      Partecipante
        45 pts

        Senza vedere il File è difficile , prova a vedere se il calcolo automatico è attivo

        #34257 Score: 0 | Risposta

        roberto21
        Partecipante
          4 pts

          Mi sembra di aver scritto nelle note che ovviamente excel è configurato per il calcolo automatico. E comunque, tanto per essere sicuro, ho riscritto la formula pari pari in un'altra cella, e questa vien calcolata subito senza problemi. D'altronde, se solo l'editing causa il ricalcolo, non c'è da stupirsi.

          #34258 Score: 0 | Risposta

          Oscar
          Partecipante
            45 pts

            roberto21 ha scritto:

            Mi sembra di aver scritto nelle note che ovviamente excel è configurato per il calcolo automatico. E comunque, tanto per essere sicuro, ho riscritto la formula pari pari in un'altra cella, e questa vien calcolata subito senza problemi. D'altronde, se solo l'editing causa il ricalcolo, non c'è da stupirsi.

            Quando selezioni la cella clicchi invio , il calcolo viene sempre eseguito anche se è disattivato

             

            Se riesci

            Allega il foglio con la formula 

            #34259 Score: 0 | Risposta

            roberto21
            Partecipante
              4 pts

              Non lo metto in dubbiio, ma se scrivo la formula ed esco senza invio, ma con le frecce (p.es.), il,calcolo viene comunque effettuato. 

              Per il codice, non saprei bene che cosa intendi. Come dicevo, costruisco la stringa in VBA access e la metto dentro il campo giusto della tabella SQLExpress. Poi la trasferisco su Excel, principalmente perchè lì è più facile pastrugnare sui dati con le pivot. Il trasferimento avviene col codice seguente

                  SQLStr = "SELECT * FROM LibroSoci"
              
              
                  Set Cn = New ADODB.Connection
                 ' Cn.Open "Driver={SQL Server Native Client 11.0};Server=" & Server_Name & ";Database=" & Database_Name & _
                 '         ";Uid=" & User_ID & ";Pwd=" & Password & ";"
              
                  Cn.Open "Driver={SQL Server Native Client 11.0};Server=" & Server_Name & ";Database=" & Database_Name & _
                          ";TRUSTED_CONNECTION=YES;"
                  
                  rs.Open SQLStr, Cn, adOpenStatic
                  ' Dump to spreadsheet
                  With Worksheets("LibroSoci")
                      If Not .ListObjects("TableLibroSoci").DataBodyRange Is Nothing Then
                          .ListObjects("TableLibroSoci").DataBodyRange.Delete  ' Enter your sheet name and range here
                      End If
                      .Range("A2").CopyFromRecordset rs
                      Application.CalculateFull
                      
                      Set tbl = .ListObjects("TableLibroSoci")
              
                  End With
                  

              ma qui non ci sono problemi.  Questo è il codice che crea la stringa, ma è abbastanza banale

              If (IsNull(Me.Carta_d_identità_Num)) Or (IsNull(Me.Scadenza_CI)) Then
                  Me.Note = "mancano dati CI"
              End If
              If (IsNull(Me.Titolo_di_studi)) Then
                  If IsNull(Me.Note) Then
                      Me.Note = "manca titolo di studi"
                  Else
                      Me.Note = Me.Note & """;char(10)" & ";" & """manca titolo di studi"
                  End If
              End If
              If (IsNull(Me.Telefono_casa)) And (IsNull(Me.Telefono_cellulare)) And (IsNull(Me.e_mail)) Then
                  If IsNull(Me.Note) Then
                      Me.Note = "manca almeno un riferimento di contatto"
                  Else
                      Me.Note = Me.Note & """;char(10) & " & ";" & """manca almeno un riferimento di contatto"
                  End If
              End If
              If IsNull(Me.Note) Then
                  rsLibroSoci![Colonna1] = Me.Note
              Else
                  rsLibroSoci![Colonna1] = "=concatenate(""" & Me.Note & """)"
              End If

              Comunque il risultato è che nel file excel, nella cella giusta, viene riportata la stringa generata (figura?).  La formula è corretta, altrimenti non verrebbe eseguita con l'INVIO, ma non si calcola automaticamente. Forse excel rifiuta di considerare formule le stringhe che gli arrivano dall'esterno? Non saprei che altro dirti, mi aspettavo che la formula venisse calcolata, e invece no.  Ti ringrazio per la pazienza e la gentilezza

              Allegati:
              You must be logged in to view attached files.
              #34261 Score: 0 | Risposta

              Oscar
              Partecipante
                45 pts

                va formatta in questo modo 

                non in General

                 

                =Format(concatenate("string1)";Char(10);"String2"),"yyyy-mm-dd")

                oppure così prova 

                =Format(concatenate("string1)";Char(10);"String2"),"dd-mm-yyyy")

                #34262 Score: 0 | Risposta

                roberto21
                Partecipante
                  4 pts

                  Così? Ma non funziona lo stesso. Non è general, è  number, ma non cambia niente.Sbaglio qualcosa. Ma perchè formattarlo a data?

                  Poi format non è una funzione, quindi =format ... dà comunque errore.

                   

                  Allegati:
                  You must be logged in to view attached files.
                  #34264 Score: 0 | Risposta

                  Raffaele53
                  Partecipante
                    24 pts

                    Puoi salvare in un'altra file Excel ed allegarlo? Senza dati sensibili

                    #34267 Score: 0 | Risposta

                    roberto21
                    Partecipante
                      4 pts

                      Per Raffaele53. Devo assumere che tu intenda il file excel dove vado ad importare la tabella, quindi lo sheet destinazione del CopyRecordSet. Si tratta di uno sheet con circa 1700 righe e oltre 35 colonne, contenente i dati dei soci di un circolo locale.Se ti basta, posso eliminare tutte le righe tranne le ultime che sono comunque fasulle (pinco pallino e paperino). Il resto dello workbook contiene la macro per importare il file da sqlexpress (che ho già trascritto) e una serie di fogli con pivot tables, che non credo interessino. 

                      Grazie dell' attenzione.

                      Allegati:
                      You must be logged in to view attached files.
                      #34270 Score: 0 | Risposta

                      Raffaele53
                      Partecipante
                        24 pts

                        Prima o poi, dovrò aggiornare Excel2013 perchè "concatenate" da me non esiste ed il fatto che non sia in MAIUSCOLO mi fà molto pensare... Se Vuoi riprovare usando solo la formula =CONCATENA("mancano dati CI";char(10);"manca titolo di studi")
                        1) Per caso usi una Function Concatenate(), nel foglio allegato non può funzionare dato che è un XLSX
                        2) A me risulta che per aggiungere un a-capo, in VBA si usa >>>Chr(10) senza "a". Però non l'ho mai visto fare in una formula. Solo tramite VBA, seleziona una cella vuota e avvia il codice

                        Function Concatenate()
                          Dim A As String
                          Dim B As String
                          Dim AB As String
                          A = "mancano dati CI"
                          B = "manca titolo di studi"
                            AB = A & Chr(10) & B
                            ActiveCell = AB
                        End Function
                        #34272 Score: 0 | Risposta

                        roberto21
                        Partecipante
                          4 pts

                          Se la cosa può consolarti,,ecco che cosa dice l'help di concatenate:

                          Use CONCATENATE, one of the text functions, to join two or more text strings into one string.

                          Important: In Excel 2016, Excel Mobile, and Excel for the web, this function has been replaced with the CONCAT function. Although the CONCATENATE function is still available for backward compatibility, you should consider using CONCAT from now on. This is because CONCATENATE may not be available in future versions of Excel.

                          Poi scopro che in excel 2016 (quello che uso) CONCAT non esiste e non viene riconosciuta (#NAME?).

                          Comunque, prima di provare col tuo codice (vedi sotto) non c'era differenza fra maiuscole e misuscole, e concatenate funziona benissimo, come avrai potuto vedere o entrando nella stringa col cursore e premendo invio, o riscrivendo pari pari la formula in un'altra cella. Quindim anche CHAR(19) dovrebbe essere ok.

                          Il file è un xslx perchè ho estratto solo lo sheet che interessava dal file completo xslm. comunque, non ho ridefinito concatenate, se è questo il dubbio.

                          Ho provato ilò tuo codice, e ho qualche difficoltà di compensione.

                          1) ho rinominato il file in xlsm

                          2) ho creato la macro, nome conc(), eliminando ovviamente la riga sub concatenate () e l'ultima end function.

                          Function Conc()
                            Dim A As String
                            Dim B As String
                            Dim AB As String
                            A = "mancano dati CI"
                            B = "manca titolo di studi"
                              AB = A & Chr(10) & B
                              ActiveCell = AB
                          End Function

                          3) per qualche motivo, la macro non compare nella lista, ma scrivendo calc() e cliccando run, viene eseguita (Mistero)

                          4) eseguendo la macro su una cella qualsiasi, il risultato è corretto (chr va bene)

                          5) se invece nella cella scrivo =conc(), il testo rimane lì senza essere eseguito

                          6) se lascio la macro con nome concatenate (minuscolo) e scrivo =concatenate() il testo rimane lì senza essere eseguito e senza segnalare errori; in questo caso =CONCATENATE in maiuscolo richiama invece la funzione excel, e chiede i parametri

                          7) se scrivo =CONCATENATE("String1";CHR(19);"String2") ottengo un #NAME?, cHR non viene riconosciuto.

                           

                          Francamente, sono perplesso, devo rimuginare un po' Grazie comunque. A me pare ci sia un po' di confusione, ma probabilmente sono io che non ho capito qualcosa

                          #34273 Score: 0 | Risposta

                          Oscar
                          Partecipante
                            45 pts

                            Non va scritto così

                             =CONCATENATE("String1";CHR(19);"String2")

                            Ma così

                             =CONCATENATE("String1"&CHR(19)&"String2")

                            Nella formula Concatenate non si usa  (:) ma la  congiunzione   &

                             

                            #34274 Score: 0 | Risposta

                            roberto21
                            Partecipante
                              4 pts

                              Direi di no. CONCATENATE vuole i parametri separati  da  ";" o ",", a seconda della versione di excel (Italia o US); l'help della funzione spiega chiaramente che O usi Concatenate  O ne fai a meno e usi l'operatore &. Ecco un pezzo dell'help.

                              =CONCATENATE(B3, " & ", C3)

                              Joins three things: the string in cell B3, a string consisting of a space with ampersand and another space, and the value in cell C3. The result is Fourth & Pine.

                              =B3 & " & " & C3

                              Joins the same items as the previous example, but by using the ampersand (&) calculation operator instead of the CONCATENATE function. The result is Fourth & Pine.

                              Comunque, ho provato anche senza Concatenate e con &, ma il rfisultato non cambia. Grazie dell'attenzione.

                              #34276 Score: 0 | Risposta

                              Oscar
                              Partecipante
                                45 pts

                                Così la usi come codice in Macro no come formula

                                hai provato  con la , Virgola non i : due Punti

                                Senza il file originale è difficile anche capire 

                                #34279 Score: 0 | Risposta

                                Raffaele53
                                Partecipante
                                  24 pts

                                  Il Char(10) oppure Chr(10) è il simbolo dell'acapo

                                  Non sono in grado di creare Function, questa l'ho trovata in rete e per usarla basta scrivere =conc(A1:A5;";"). Con questa non risolvi nulla, ci vorrebbe un'altra Function che elabora le stringhe inserite divise dal ";" tipo >>> =Concatenate2("aaa";"bbb";"ccc"). Premesso che non ho la risposta giusta, secondo me devi solo scrivere
                                  ="mancano dati CI" & CODICE.CARATT(10) & "manca titolo di studi"
                                  NB. Devi formattare le celle con "TESTO A CAPO"

                                  Ps. Il fatto che i dati arrivano (presumo Access/Query) non sò dirTi altro

                                  Function CONC(Ref As Range, Separator As String) As String
                                  Dim Cell As Range
                                  Dim Result As String
                                      For Each Cell In Ref
                                          Result = Result & Cell.Value & Separator
                                      Next Cell
                                  CONC = Left(Result, Len(Result) - 1)
                                  End Function
                                  #34280 Score: 0 | Risposta

                                  roberto21
                                  Partecipante
                                    4 pts

                                    Oscar, non ho usato i due punti, ma il punto e virgola. Poi, se scrivo con la virgola, vien fuori un errore. 

                                    =CONCATENATE ("String1) & CHAR(10) & "String2") 

                                    =CONCATENATE("String1";CHAR(10);"String2")

                                    e

                                    ="String1" & CHAR(10) & "String2"

                                    danno lo stesso risultato, e occorre il wrap text per vedere le due linee, come giustamente fa notare Raffaele. Il problema rimane: qualunque delle tre mando  da sqlexpress a excel, la stringa (peraltro corretta) rimane lì a far nulla. 

                                    Ci penserò ancora.

                                    #34281 Score: 0 | Risposta

                                    Oscar
                                    Partecipante
                                      45 pts

                                      Non so che dire ma vedi esempio 

                                      Sinceramente non ho ancora capito cosa devi ottenere

                                      Allegati:
                                      You must be logged in to view attached files.
                                      #34283 Score: 0 | Risposta

                                      roberto21
                                      Partecipante
                                        4 pts

                                        Scusa Oscar, non ho capito che dcosa vuoi dimostrare con il tuo esempio. Che =@CONCATENATE dia errore è evidente, l'altro non dice niente di nuovo.

                                        Il problema, che mi sembra di aver già chiarito, è che la stringa (qualunque delle tre equivalenti) che arriva ad EXcel tramite il dump dalla tabella sotto SQLExpress viene correrttamente recepita nella cella ma non viene riconosciuta come formula, se non andandoci dentro e premendo invio (cioè editandola). Vorrei solo ottenere che venisse elaborata automaticamernte come formula. 

                                        A questo punto devo dedurre che excel per qualche motivo rifiuta di considerare formula qualunque stringa gli arrivi dall'esterno. Non si riesce a farla eseguire nemmeno con F9, che potrebbe essere simulato via VBA. 

                                        #34284 Score: 0 | Risposta

                                        patel
                                        Moderatore
                                          51 pts

                                          Probabilmente è colpa del CopyRecordSet, potresti provare a copiare i singoli elementi in altre celle libere e poi concatenarli ed inserirli nella cella giusta  tramite macro su excel

                                          #34285 Score: 0 | Risposta

                                          Oscar
                                          Partecipante
                                            45 pts

                                            roberto21 ha scritto:

                                            Scusa Oscar, non ho capito che dcosa vuoi dimostrare con il tuo esempio. Che =@CONCATENATE dia errore è evidente, l'altro non dice niente di nuovo.

                                            Il problema, che mi sembra di aver già chiarito, è che la stringa (qualunque delle tre equivalenti) che arriva ad EXcel tramite il dump dalla tabella sotto SQLExpress viene correrttamente recepita nella cella ma non viene riconosciuta come formula, se non andandoci dentro e premendo invio (cioè editandola). Vorrei solo ottenere che venisse elaborata automaticamernte come formula. 

                                            A questo punto devo dedurre che excel per qualche motivo rifiuta di considerare formula qualunque stringa gli arrivi dall'esterno. Non si riesce a farla eseguire nemmeno con F9, che potrebbe essere simulato via VBA. 

                                            Credo di aver capito 

                                            Ma senza il File originale sarà dura si va sempre solo a tentativi 

                                          Login Registrati
                                          Stai vedendo 20 articoli - dal 1 a 20 (di 20 totali)
                                          Rispondi a: formula non calcolata
                                          Gli allegati sono permessi solo ad utenti REGISTRATI
                                          Le tue informazioni: