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

CERCA.VERT CON RISULTATI MULTIPLI

Ultimo Aggiornamento: 02/08/2017 16:04
Post: 3.398
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
31/07/2017 18:46

Su questo mi trovi impreparato.

Ho qualche idea ma devo fare delle prove per vedere se funzionano o meno ma la vedo un po' difficile (almeno per me).

Alfredo
Post: 17
Registrato il: 28/07/2017
Città: MILANO
Età: 36
Utente Junior
2010/2013
OFFLINE
31/07/2017 18:49

Cioè manualmente in excel si fa con ALT + INVIO.
non si potrebbe tradurre in una macro?
Post: 18
Registrato il: 28/07/2017
Città: MILANO
Età: 36
Utente Junior
2010/2013
OFFLINE
31/07/2017 18:59

Ho letto che lo fa questa formula:
CODICE.CARATT(10)

Ne sapete qualcosa? è possibile applicarla alla funzione?
Post: 3.399
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
31/07/2017 19:00

Si questo lo so.

Il punto è che noi abbiamo una funzione e le funzioni in Excel restituiscono risultati ma non compiono azioni ed inserire ALT + INVIO è appunto un'azione.

Per compiere azioni occorre utilizzare una Sub.

Alfredo
Post: 19
Registrato il: 28/07/2017
Città: MILANO
Età: 36
Utente Junior
2010/2013
OFFLINE
31/07/2017 19:04

la soluzione potrebbe esser quella di lanciare una procedura dopo la funzione....non so.
avete altre idee?
Post: 3.402
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
01/08/2017 09:18

Ciao Wexcel

E' stato più semplice del previsto

Ti ho modificato la function

gb
Function Riporta1(a As Range, rng As Range)
Dim cel As Range
Dim stringa As String
For Each cel In rng
    If cel.Value = a.Value Then
        Riporta1 = Riporta1 & cel.Offset(0, 1).Value & " " & cel.Offset(0, 2).Value & "; " & vbCrLf
    End If
Next cel
End Function


L'unica cosa che devi fare è impostare, nelle celle dove la vai ad inserire Formato Celle, Allineamento, Testo a capo.

Alfredo
Post: 20
Registrato il: 28/07/2017
Città: MILANO
Età: 36
Utente Junior
2010/2013
OFFLINE
01/08/2017 09:19

Buongiorno ragazzi...
alfrimpa, avrei da segnalarti un'ultima cosa:

premesso che la funzione svolge il compito richiesto, ho un problema.
ogni volta che apro il file excel di riferimento nelle celle in cui è inserita la formula appare : #VALORE!

la formula in questione è riferita ad un altro file excel ma nononstante aggiorni i collegamenti devo necessariamente aprire il file altrimenti questa non funziona...
Post: 3.403
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
01/08/2017 12:17

Ciao Wexcel

Per un file chiuso la formula va scritta così

vb
=Riporta1(A1;'C:\Excel\[Wexcel.xlsm]Foglio1 '!$B$8:$B$18)


variando ovviamente il percorso del file

Alfredo
Post: 21
Registrato il: 28/07/2017
Città: MILANO
Età: 36
Utente Junior
2010/2013
OFFLINE
02/08/2017 10:54

Buongiorno  a tutti.
Alfredo grazie mille del supporto; con riferimento all TUA funzione riporta1 adattata con testo a capo, avrei da segnalarti una cosa:
nel caso in cui sono presenti delle corrispondenze non valorizzate mi appare la seguente situazione:

77532020;

x;

77709252;

x;


77712252;

x;




dove io elimino la x con SOSTITUISCI, ma mi rimane comunque lo spazio vuoto, cioè cosi:

77532020; 



77709252; 



77712252; 

Secondo voi è possibile fare in modo che venga eliminato lo spazio tra i vari record avendo questo risultato ?

77532020; 
77709252; 
77712252; 

Grazie mille !


Post: 3.406
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
02/08/2017 11:25

Allega piccolo file di esempio

Alfredo
Post: 22
Registrato il: 28/07/2017
Città: MILANO
Età: 36
Utente Junior
2010/2013
OFFLINE
02/08/2017 13:09

Ecco il file di esempio:

grazie
Post: 3.407
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
02/08/2017 13:46

Ecco la function modificata

vb
Function Riporta1(a As Range, rng As Range)
Dim cel As Range
Dim stringa As String
For Each cel In rng
    If cel.Value = a.Value And cel.Offset(0, 1).Value <> "" Then
        Riporta1 = Riporta1 & cel.Offset(0, 1).Value & " " & cel.Offset(0, 3).Value & vbCrLf
    End If
Next cel
End Function


Ho tolto anche il ";" perché visto che ogni voce va a capo lo ritengo abbastanza inutile.

Alfredo
Post: 23
Registrato il: 28/07/2017
Città: MILANO
Età: 36
Utente Junior
2010/2013
OFFLINE
02/08/2017 14:52

Grazie Alfreo.
solo una domanda: Ma...se volessi avere le corrispondenze in due colonne, all'intero della stessa riga, come le seguente esempio:

AS IS:                     TO BE:

7710                 7710     7799
7723                 7723     7720
7730                 7730
7799
7720


Che ne dite?
Post: 3.408
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
02/08/2017 15:26

Ma perché ad ogni post fai una domanda diversa?

Anche qui allega un piccolo esempio altrimenti è difficile capire.

Alfredo
Post: 24
Registrato il: 28/07/2017
Città: MILANO
Età: 36
Utente Junior
2010/2013
OFFLINE
02/08/2017 15:44

Perchè me ne sono accorto ora che va strutturato diversamente...(

in allegato l'esempio.

grazie
Post: 3.409
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
02/08/2017 15:49

Onestamente non saprei come fare.

In base a quale criterio le 6 voci del prodotto1 devono essere suddivise nelle tre coppie esposte?

Alfredo
Post: 25
Registrato il: 28/07/2017
Città: MILANO
Età: 36
Utente Junior
2010/2013
OFFLINE
02/08/2017 15:57

beh, è una scelta arbitraria.
L'importante è che ci siano due coppia; l'ideale sarebbe averle ripartite equamente ma so che non è possibile, quindi andrebbe bene anche una soluzione diversa.

basta che siano divisi in due coppie...
Post: 3.410
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
02/08/2017 16:04

Mi spiace su questo non so aiutarti.

Alfredo
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 2 | 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 01:48. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com