Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Copiare INDIRETTO+CERCA.VERT

Ultimo Aggiornamento: 08/02/2018 17:17
Post: 3.154
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Master
2013
OFFLINE
07/02/2018 23:48

Ciao a tutti
Ho un problema che non riesco risolvere
Devo copiare una determinata area da un file (SM-45-B.xlsm) ad un altro file
All'interno di queste celle varie formule tra cui INDIRETTO + CERCA.VERT
=SE(E(INDIRETTO("Dati!AN"&U63)=L59;INDIRETTO("Dati!AN"&U63+1)=P64);Dati'!AN$2..ecc ecc
=CERCA.VERT(M70-S68;Dati!H$2:I$10;2;VERO)
Quando le copio diventano
=SE(E(INDIRETTO("Dati!AN"&U63)=L59;INDIRETTO("Dati!AN"&U63+1)=P64);'[SM-45-B.xlsm]Dati'!AN$2..ecc ecc
=CERCA.VERT(M70-S68;'[SM-45-B.xlsm]Dati'!H$2:I$10;2;VERO)

In poche parole alcune formule si portano dietro il nome del files d'origine
Ho trovato un modo strano, cioè copiarle senza il segno = davanti, mà sono tantissime celle
Grazie mille
Excel 2013
Post: 2.661
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
08/02/2018 08:21

Buona giornata, Raffaele;
leggerti è sempre un piacere.

Purtroppo, con Excel 2010 il problema che lamenti non accade; se con Excel 2007 lamenti questo problema potresti provare con un Codice VBA di questo tipo:

Option Explicit

Sub Copia_Formule()
    Windows("Cartel2").Activate
        Cells(3, 2).FormulaLocal = "=CERCA.VERT(M70-S68;H$2:I$10;2;0)"
End Sub


Nel caso rimanga qualche dubbio, potremmo sentirci in Skype; potrebbe essere l'occasione per poter fare una chiacchierata.


A disposizione.

A presto.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 3.155
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Master
2013
OFFLINE
08/02/2018 12:10

Ciao GiuseppeMN (sempre in gamba)
Purtroppo non mi sembra attuabile, dato che le formule variano in ogni cella.
Leggendo in rete ho trovato lo stesso errore (dicevano di sostituire = con @ manuamente)
Riuscissi fare un ciclo For su tutto il foglio d'origine che toglie o sostituisce il simbolo =
Purtroppo non sò come modificare la formula già presente in ogni cella tramite VBA
Excel 2013
Post: 1.795
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
08/02/2018 12:17

Ciao
ho capito bene che vorresti copiare tutte le formule togliendo il primo = e poi rimettercelo sempre da macro ??

Se così fosse pui usare .formula del range.

Per esempio se in A1 hai una formula qualsiasi, per ricavarne il testo senza l'uguale puoi fare:

f = Mid(Range("A1").Formula, 2, Len(Range("A1").Formula))

Nel tuo caso ovviamente devi ciclare le celle contenenti formule ed applicare la modifica.

Per reinserire l'uguale farai Range("A1")= "=" & Range("A1")

saluti


[Modificato da dodo47 08/02/2018 12:39]
Domenico
Win 10 - Excel 2016
Post: 3.156
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Master
2013
OFFLINE
08/02/2018 17:17

Grazie dodo47
Ho capito, appena fatto il codice lo sposto
Però 10 anni che lavoro col 2007, mi sembra che non mi sia mai successo.
Tranne INDIRETTO con file esterni, mà tutte queste formule lavorano sul medesimo file e non capisco il motivo.

OK, speravo più veloce. Devo controllare bene
Anche se per sicurezza ho fatto due passaggi in più
Text = Sh1.Cells(Y, X).Formula
Text = Mid(Text, 2, Len(Text))
Sh2.Cells(Y, X) = Text
Sh2.Cells(Y, X) = "=" & Text
Comunque Grazie


vb
Option Explicit
Sub CopiaFormule()
Dim W1 As Workbook, Sh1 As Worksheet, W2 As Workbook, Sh2 As Worksheet
Dim Text As String, FileS As String, R As Long, C As Long, X As Long, Y As Long
Set W1 = Workbooks("SM-45-B.xlsm")
Set Sh1 = W1.Sheets("Foglio0") 'deve esistere
    FileS = Application.Dialogs(xlDialogOpen).Show
    FileS = ActiveWorkbook.Name
    Set W2 = Workbooks(FileS)
    Set Sh2 = W2.Sheets("Foglio1") 'deve esistere
    R = 1
    C = 11
    For Y = R To 200
        For X = C To 21
            If Mid(Sh1.Cells(Y, X).Formula, 1, 1) = "=" Then
                Text = Sh1.Cells(Y, X).Formula
                Text = Mid(Text, 2, Len(Text))
                Sh2.Cells(Y, X) = Text
                Sh2.Cells(Y, X) = "=" & Text
            Else
                Sh2.Cells(Y, X) = Sh1.Cells(Y, X)
            End If
        Next X
    Next Y
Set W1 = Nothing
Set W2 = Nothing
Set Sh1 = Nothing
Set Sh2 = Nothing
MsgBox "Fatto"
End Sub
[Modificato da raffaele1953 08/02/2018 22:47]
Excel 2013
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 13:37. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com