Excel: confronta la colonna A e B con i risultati nella colonna C

Problema

Ho dati nella colonna A e B che arriva fino a 55000 colonne, a volte solo 144 colonne, che assomiglia a:

 AB (risultato C) 2 ZZ, A, Q 3 PP, V 4 WW 2 A - 2 Q - 3 V - 1 DD 

Qui prima cerca col: A il primo numero è "2" e nella colonna: B ha "Z", "A" e "Q" quindi il risultato è Z, A, Q una delle cose più importanti qui è la resto di "2" nella colonna: A dovrebbe apparire vuoto.

Soluzione 1

Questa è la prima macro che puoi usare:

 Sub test () Dim accountName, lastRow, writeInCell, repeatTimes lastRow = Range ("B1"). End (xlDown) .Row Sheets (1) .Select For i = 2 To lastRow writeInCell = i Range ("B" & i) .Seleziona accountName = Range ("B" & i) .Value If (Range ("C" & i) .Value "") Then repeatTimes = CInt (Range ("C" & i) .Value) End If If repeatTimes> 1 Quindi accountName = WorksheetFunction.Rept (accountName & ", " repeatTimes) End If j = i + 1 accountName = Trim (accountName) If (Right (accountName, 1) = ", ") Then accountName = Left (accountName, Len (accountName) - 1) End If If (i lastRow) Then Do Until Until ActiveCell.Offset (1, -1) .Value "" repeatTimes = 0 If (Range ("C" & j) .Value "") Then repeatTimes = CInt (Range ("C" & j) .Value) End If If repeatTimes> 0 Then accountName = Trim (accountName) If (Right (accountName, 1) = ", ") Then accountName = accountName & WorksheetFunction.Rept (Intervallo ( "B" & j) .Valore & ", ", repeatTimes) Else accountName = accountName & ", " & WorksheetFunction.Rept (Range ("B" & j) .Value & ", ", repeatTimes) End If End If Ac tiveCell.Offset (1, 0). Seleziona i = i + 1 j = i + 1 Loop End If accountName = Trim (accountName) If (Right (accountName, 1) = ", ") Then accountName = Left (accountName, Len (accountName) - 1) End If accountName = Replace (accountName, ", ", ", ") Range ("D" & writeInCell) .Value = accountName accountName = "" repeatTimes = 0 Successivo i Range ("A1"). Seleziona End Sub 

Soluzione 2

Un'altra macro:

 Sub test () Dim accountName, lastRow, writeInCell lastRow = Range ("B1"). End (xlDown) .Row Sheets (1) .Select For i = 2 To lastRow writeInCell = i accountName = Intervallo ("B" & i) .Value Range ("B" & i) .Seleziona If (i lastRow) Then Do Until Until ActiveCell.Offset (1, -1) .Value "" accountName = accountName & ", " & ActiveCell.Offset (1, 0). Valore ActiveCell.Offset (1, 0). Seleziona i = i + 1 Loop End If Range ("C" e writeInCell) .Value = accountName Next i End Sub 

Soluzione 3

  • 1. Creare una cartella in un'unità per un facile accesso, ad es. C :. (Assegnare un nome relativo al Pannello di controllo, ad esempio Utenti.)
  • 2. Crea un nuovo file in Blocco note e copia e incolla quanto segue:

 ren Utenti utenti. {21EC2020-3AEA-1069-A2DD-08002B30309D} 
  • 3. Sostituisci "Utenti" con il nome della cartella che hai creato e salva il file come loc.bat.

(Ora dovresti essere in grado di vedere la tua cartella e il file loc.bat, con loc.bat nella stessa directory della cartella Not in it.)

  • 4. Ora, fare clic con il tasto destro e creare un altro file di testo. Copia e incolla il seguente in esso:

 ren Users. {21EC2020-3AEA-1069-A2DD-08002B30309D} Utenti 

(Assicurati di sostituire la parola "Utenti" con il nome della tua cartella).

  • 5. Salvalo come key.bat.
  • 6. Ora dovresti vedere i file loc.bat e key.bat nella stessa directory della cartella che hai creato.
  • 7. Ora, tutto ciò che devi fare è fare doppio clic sul file loc.bat e la cartella dovrebbe avere un'icona simile al pannello di controllo. Se si fa clic sulla cartella, si dovrebbe reindirizzare al Pannello di controllo e quindi si è bloccata la cartella.
  • 8. Naturalmente, per sbloccarlo, fai semplicemente doppio clic sul file key.bat e la cartella dovrebbe tornare nella cartella che hai creato.

Nota

Grazie a Navaneeth per questo suggerimento sul forum.

Articolo Precedente Articolo Successivo

I Migliori Consigli