Risolto Suddivisione nota testuale in contenuto "sensato" bis

ClaudioFu

Utente junior
Original poster
15 Novembre 2024
53
19
8
2024
Buongiorno,
Con riferimento a questa discussione https://www.forumexcel.it/forum/thr...stuale-in-contenuto-sensato.84491/post-696037
in cui la premessa era:
"Buongiorno a tutti, già il titolo è incomprensibile figuriamoci la spiega. :occhispalancati:
Molto impropriamente abbiamo utilizzato due campi note testuali per indicare la suddivisione di un articolo padre in sottoformati indicandone la lunghezza in millimetri. Ora la sfida impossibile è suddividere queste note in righe che indichino l'articolo, la descrizione, la relativa lunghezza in millimetri e qualora presente il lotto. Purtroppo il "pattern" da poter utilizzare è variabile dato che il testo è stato inserito con molta fantasia. Vi allego un file in cui la tabella di sinistra ha 7 articoli di esempio e a destra la tabella dei 39 sottoformati derivati. Nel file non c'è alcuna formula dato che non ho idea di come approcciare la cosa. Accetto suggerimenti. Grazie mille

P.S. nel file i due campi nota sono stati uniti con il separatore '<->'."

chiederei a Terio @Terio che trovò la soluzione da me scelta, se è possibile suddividere diversamente la riga di testo. Invece di duplicare le righe indicate dal numero di pezzi, aggiungere tale numero ad una nuova colonna titolata appunto pezzi.
Allego il file di esempio con il "nuovo" desiderata.
Trovare e indicare il lotto non è più necessario in quanto andrà comunque poi verificato visivamente per abbinarlo correttamente ai figli così generati.
Grazie

PP.SS. a questo punto i sottoformati sono 34 e non 39 (per la precisione)

PPP.SSS. si scusa Terio @Terio sempre con 365
 

Allegati

  • Decodifica Note testo2.xlsx
    10,9 KB · Visite: 6
Ultima modifica:

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
29.006
6.352
2.345
55
Arce
2016, 2019, 365
Sempre genericamente a tutti i partecipanti, capisco di aver analizzato e risolto il precedente, ma va dato spazio a tutti, visto che c'è chi ha le competenze per poterti aiutare.
Fatta la precisazione, arriva anche una possibile implementazione:
=LET(tbl;ESCLUDI(REDUCE("";C2:.C999;LAMBDA(acc;nota;LET(qtà;REGEX.ESTRAI(REGEX.SOSTITUISCI(ANNULLA.SPAZI(REGEX.SOSTITUISCI(REGEX.SOSTITUISCI(nota;"\d{2}/\d{2}/\d{2}|<->|l\.\d+\s*|l=|mm";"";;1);"\s*pz\s*";"x"));"\s|-";"+");"\d+x\d+|\d+";1);STACK.VERT(acc;ESCLUDI(REDUCE("";SCAN("1";TESTO.PRECEDENTE(qtà;"x";;;;"");LAMBDA(a;pz;SE(pz="";a;pz)))&"x"&TESTO.SUCCESSIVO(qtà;"x";;;;qtà);LAMBDA(a;cod;STACK.VERT(a;SCARTO(nota;;-2)&"§"&SCARTO(nota;;-1)&"§"&TESTO.SUCCESSIVO(cod;"x")&"§"&TESTO.PRECEDENTE(cod;"x"))));1)))));1);REDUCE({"CODICE"\"DESCRIZIONE"\"LUNGHEZZA"\"PEZZI"};tbl;LAMBDA(acc;codice;STACK.VERT(acc;DIVIDI.TESTO(codice;"§")))))
che, come hai specificato:
Trovare e indicare il lotto non è più necessario
mi ha fatto eliminare una colonna nel risultato.

Ciao.
N.B.
Ho eliminato i riferimenti strutturati in quanto la Tabella2 è stata convertita in intervallo, ma ho usato la notazione trimrange per rendere flessibile il riferimento alla 3ª colonna.

edit
Per curiosità ho dato in pasto la formula a Copilot: non è stato in grado di fare di meglio e le sue osservazioni in parte smontate, ma questo può essere oggetto di analisi nell'apposita sezione 🙂
 
Ultima modifica:

ClaudioFu

Utente junior
Original poster
15 Novembre 2024
53
19
8
2024
Buongiorno a tutti,
chiudo scusa, non volevo escludere nessuno, anzi ogni partecipazione è quanto mai gradita.
Confermo che l'ulteriore soluzione di Terio @Terio funziona per quello che avevo richiesto.
Per ora mi godo il risultato ma sto già porzionando la formula per carpirne il funzionamento.
Ho difficoltà a trovare info sulla sintassi dei pattern di REGEX.ESTRAI/SOSTITUISCI ma piano piano ...
 
  • Like
Reactions: Terio

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
29.006
6.352
2.345
55
Arce
2016, 2019, 365
Ho difficoltà a trovare info sulla sintassi dei pattern di REGEX.ESTRAI/SOSTITUISCI
Io uso solitamente:
ma ce ne sono diversi.
È un modo efficace per cercare stringhe complesse e che personalmente mi attira, nonostante abbia qualche difficoltà con le ricerche lookahead e lookbehind; ad ogni modo chiedi se serve.
funziona per quello che avevo richiesto
Grazie sempre dei riscontri,
ciao.
 
  • Like
Reactions: Canapone

ClaudioFu

Utente junior
Original poster
15 Novembre 2024
53
19
8
2024
Buongiorno a tutti,
spero di non combinare l'ennesimo pasticcio riportando quì il feedback con risultato finale.
Allego un file che partendo dalla richiesta ha a sinistra (A:C) le colonne di partenza in (E:I) in desiderata e in (K:N) il risultato del formulone di Terio @Terio . Purtroppo ne vedete solo il risultato perchè non avendo 365 sono andato in prestito e poi ho concluso il lavoro sul mio 2024. 😪
In colonna (O) ho riportato i valori restituiti dal cerca.vert di colonna (P) che non fa altro che affiancare il campo NOTA al codice articolo. Ovviamente riporta la stessa nota in quei casi in cui appunto la nota è stata suddivisa come da richiesta.
Per facilitare il check finale ho scopiazzato (malamente) una macro che non ricordo dove ho trovato perdonatemi. La macro cicla le celle del range (O2:O35) verifica se contiene la LUNGHEZZA espressa sulla stessa riga di colonna (M) e ne evidenzia in rosso la corrispondenza. Questo ci facilita un po' la verifica dato che in realtà il file di produzione ha prodotto circa 900 righe.
Credo il file sia più chiaro della mia spiega.
Grazie a tutti

P.S. So che affiancare il campo NOTA probabilmente si sarebbe potuto ottenere con la formula stessa ma non me la sono sentita di aprire una ulteriore richiesta 😇
 

Bruno

Excel/VBA Expert
Staff
13 Settembre 2015
4.794
1.738
245
Italy
365/64 Bit W10
Ciao
Un modo per analizzare la serie in altra versione < 365

=ESCLUDI(DIVIDI.TESTO(TESTO.UNISCI("|";;SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(C2;"<->";"@");"pz ";"x");"l= ";"");"l=";"");"L=";"");"-";""));{" "\"@"\"mm"\"+"};;1;1);;-1)
 
Ultima modifica:
  • Like
Reactions: Terio

ClaudioFu

Utente junior
Original poster
15 Novembre 2024
53
19
8
2024
Grazie mille Bruno @Bruno ,
ottimo spunto. Non fa esattamente quanto richiesto ma è un ottimo punto di partenza.
 

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
29.006
6.352
2.345
55
Arce
2016, 2019, 365
In questo caso la fx dividi.testo è disponibile su 365 e 2024
Anche ESCLUDI; penso che Bruno @Bruno (ciao) si sia basato sul profilo dell'OP che, solo su richiesta, ha potuto invece adottare una soluzione per il 365.

Ciao.
 

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
29.006
6.352
2.345
55
Arce
2016, 2019, 365
Resta invece assolutamente aperta la mia personalissima sfida al recupero del giusto numero di pezzi, come avevi indicato in precedenza
VIsto che la richiesta è soddisfatta, ma è altrettanto intrigante trovare ulteriori strade, sposto gli ultimi messaggi nella sezione degli approfondimenti.

Ciao e grazie dei preziosi riscontri.