Excel - Sammenlign kolonne A & B gir resultater i kolonne C

Utgave

Jeg har data i kolonne A & B som løper opptil 55000 kolonner, noen ganger bare 144 kolonner, som ser ut som:

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

Her ser du først etter kol: A det første nummeret er "2" og i kolonne: B har "Z", "A" & "Q" så resultatet er Z, A, Q en av de viktigste er her resten av "2" i kolonne: A skal være tom.

Løsning 1

Dette er den første makroen du kan bruke:

 Sub-test () Dim-kontonavn, sisteRow, writeInCell, repeatTimes lastRow = Range ("B1"). Slutt (xlDown) .Row Sheets (1) .Velg For i = 2 For å vareRå writeInCell = .Velg kontonavn = Range ("B" & i) .Value If (Range ("C" & i) .Value "") Så repeatTimes = CInt (Range ("C" & i) .Value) End Hvis Hvis repeatTimes> 1 deretter accountName = WorksheetFunction.Rept (accountName & ", " repeatTimes) Slutt hvis j = i + 1 accountName = Trim (kontonavn) Hvis (Høyre (accountName, 1) = ", ") Then accountName = Left (1) .Value "" repeatTimes = 0 Hvis (Range ("C" & j) .Value "") Så repeatTimes = CInt (Range ("C" & j) .Value) End Hvis Hvis repeatTimes> 0 Then accountName = Trim (kontonavn) Hvis (Høyre (accountName, 1) = ", ") Then accountName = kontonavn og regnearksfunksjon. "B" & j) .Value & ", " repeatTimes) Else accountName = accountName & ", " & WorksheetFunction.Rept (Range ("B" & j) .Value & ", " repeatTimes) Slutt hvis slutt hvis Ac tiveCell.Offset (1, 0) .Velg i = i + 1 j = i + 1 Loop End Hvis accountName = Trim (accountName) Hvis (Høyre (accountName, 1) = ", ") Then accountName = Left (kontonavn) - 1) Slutt Hvis kontonavn = Erstatt (kontonavn, ", ", ")" Område ("D" & writeInCell) .Value = accountName accountName = "" repeatTimes = 0 Neste i Range ("A1"). Velg End Sub 

Løsning 2

En annen makro:

 Sub-test () Dim-kontonavn, sisteRow, writeInCell lastRow = Range ("B1"). Slutt (xlDown) .Row Sheets (1) .Velg for i = 2 For å gå igjenRow writeInCell = jeg accountName = Range ("B" & i) .Value Range ("B" & i) .Velg Hvis (jeg sistRow) Så Gjør til ActiveCell.Offset (1, -1) .Value "" accountName = accountName & ", " & ActiveCell.Offset (1, 0). Verdi ActiveCell.Offset (1, 0) .Velg i = i + 1 Loop End Hvis Range ("C" & writeInCell) .Value = accountName Neste End End Sub 

Løsning 3

  • 1. Opprett en mappe i en stasjon for enkel tilgang, f.eks. C :. (Navn den som er relatert til kontrollpanelet, f.eks. Brukere.)
  • 2. Lag en ny fil i Notisblokk og kopier og lim inn følgende i det:

 rene brukere. {21EC2020-3AEA-1069-A2DD-08002B30309D} 
  • 3. Erstatt "Brukere" med navnet på mappen du opprettet og lagre filen som loc.bat.

(Du bør nå kunne se mappen din og loc.bat-filen, med loc.bat i samme katalog som mappen Ikke i den.)

  • 4. Høyreklikk nå og opprett en annen tekstfil. Kopier og lim inn følgende i det:

 renere brukere. {21EC2020-3AEA-1069-A2DD-08002B30309D} Brukere 

(Pass på at du erstatter ordet "Brukere" med navnet på mappen din.)

  • 5. Lagre det som key.bat.
  • 6. Nå bør du se loc.bat og key.bat-filene i samme katalog som mappen du opprettet.
  • 7. Nå er alt du trenger å gjøre ved å dobbeltklikke på loc.bat-filen, og mappen skal ha et ikon som ser ut som kontrollpanelet. Hvis du klikker på mappen, skal den omdirigere deg til kontrollpanelet og dermed har du låst mappen.
  • 8. Selvfølgelig, for å låse opp det, må du dobbeltklikke på key.bat-filen og mappen skal slå tilbake til mappen du først opprettet.

Merk

Takk til Navaneeth for dette tipset på forumet.

Forrige Artikkel Neste Artikkel

Beste Tips