Sto cercando di creare un codice VBA per cercare altre istanze di una determinata stringa, spostare l'istanza originale sopra trovata


0

Sto cercando di creare una macro VBA abbastanza semplice per automatizzare un processo in Excel. Altrimenti dovrò ripetere manualmente centinaia di volte. Ho un foglio con diverse centinaia di righe di dati, con circa 20 colonne ( dataset1). Una delle colonne contiene un identificatore per la riga (ad esempio, product serial number). Esistono più istanze di ciascun identificatore. Né l'ordinamento né il filtro funzioneranno per questa applicazione perché i dati sono disposti in una struttura ad albero e devono rimanere in questo modo. In fondo, c'è una seconda serie di dati ( dataset2) contenenti informazioni simili.
Devo organizzare i dati in modo tale che una riga specifica dataset2sia inserita in una nuova riga sopra la riga contenente lo stesso identificatore in dataset1.

Quindi, penso che sto cercando di creare una macro che trova l'ultima istanza di una stringa nel foglio (la stringa (identificatore) da cercare è sempre nella colonna F), trova la stringa altrove, crea una nuova riga sopra la prima istanza e incolla l'intera riga contenente l'ultima istanza della stringa nella riga appena creata. Ho provato a registrare questo processo come una macro senza successo.

Sono completamente nuovo alle macro e apprezzo tutto l'aiuto che puoi fornire.


Sfortunatamente, per farlo, dovrai rimboccarti le maniche e in realtà imparare a programmare in Visual Basic, Applications Edition. A meno che tu non sia disposto a pagare qualcuno per servizi di consulenza (e sollecitare ciò sarebbe estremamente contrario alle regole di questo sito, quindi non chiederlo qui), nessuno scriverà il tuo codice per te. Puoi cercare esempi simili online, ma dovrai modificarli per adattarli alle tue circostanze esatte, qualunque cosa accada, quindi potresti anche prendere il tempo di imparare qualcosa di nuovo. Cosa ti ferma?
allquixotic,

Se hai bisogno di un punto di partenza, registrare una macro in Excel non è un modo terribile per farlo. La funzionalità macro registrata è un po '"stupida", in quanto il codice generato non riconosce i modelli in ciò che stai cercando di fare e lo generalizza in una procedura automatizzata, ma registrerà letteralmente ciò che fai. Puoi quindi generalizzare questo da solo, probabilmente scrivendo una sorta di ciclo attraverso le righe del foglio di calcolo, eseguendo l'operazione registrata dalla macro, ma modificando i numeri di riga mentre scendi.
allquixotic,

A proposito, dal modo in cui hai descritto il tuo problema, penso che questo sia totalmente fattibile in VBA; vale a dire, non penso che incontrerai difficoltà nel far sì che l'ambiente di programmazione faccia quello che vuoi. Questa dovrebbe essere una cosa ragionevolmente semplice da fare, una volta definiti correttamente i requisiti (ovvero la logica aziendale) e tradotti in codice. Ma dovrai imparare VBA in un modo o nell'altro o assumere i servizi di qualcuno che lo fa. È la nostra politica su questo sito (e tutti gli altri sulla rete SE, quindi non chiedere di nuovo su StackOverflow) di non scrivere il codice delle persone per loro.
allquixotic,

Ciao! Ho scritto e modificato macro VB prima, ma questo è solo un po 'fuori dalla mia profondità - come ho già detto, sto ancora imparando. (Mi rendo conto ora che ho dimenticato di fornire il codice che ho già nel mio post originale, mi scuso ancora) Ho lavorato con alcune macro che svolgono funzioni simili, ma non proprio quello che sto cercando. Non sono riuscito a far sì che il ciclo di script si spostasse nel foglio di calcolo nel modo desiderato. Credo che sia stato un problema relazionale con i due set di dati disgiunti. Ad ogni modo, apprezzo l'aiuto e sono stato in grado di far funzionare le cose.
CeeJay,

@CeeJay Puoi pubblicare il codice che hai adesso? Se hai una base (anche se non funziona nel modo desiderato), dovremmo essere in grado di identificare i problemi nel codice e aiutarti da lì.
fulmine
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.