Excel - Usporedi stupac A i B daje rezultate u stupcu C

Problem

Imam podatke u stupcu A i B koji pokriva do 55000 stupaca ponekad samo 144 stupca, što izgleda ovako:

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

Ovdje prvo potražite col: A prvi broj je "2" iu stupcu: B ima "Z", "A" & "Q" pa je rezultat Z, A, Q jedna od najvažnijih stvari ovdje je ostatak "2" u stupcu: A treba prikazati prazno.

Rješenje 1

Ovo je prva makronaredba koju možete koristiti:

 Sub test () Dim accountName, lastRow, writeInCell, repeatTimes lastRow = Raspon ("B1") Kraj (xlDown) .Row Sheets (1) .Odaberite Za i = 2 Do lastRow writeInCell = i Range ("B" & i) .Select accountName = Raspon ("B" & i) .Vrijednost If (Raspon ("C" & i) .Vrijednost "") Zatim repeatTimes = CInt (Raspon ("C" & i) .Vrijednost) Kraj Ako je ponovljenoTimes> 1 Onda accountName = WorksheetFunction.Rept (accountName & ", ", repeatTimes) Kraj Ako j = i + 1 accountName = Trim (accountName) If (Right (accountName, 1) = ", ") Onda accountName = Left (accountName, Len (accountName) - 1) Završi ako je (i lastRow) tada učinite do ActiveCell.Offset (1, -1) .Value repeatTimes = 0 If (Raspon ("C" & j) .Vrijednost "") Zatim repeatTimes = CInt (Raspon ("C" & j) .Vrijednost) Kraj Ako je ponovljenoTimes> 0 Zatim accountName = Trim (accountName) If (Desno (accountName, 1) = ", ") Onda accountName = accountName & WorksheetFunction.Rept (Raspon ( "B" & j) .Vrijednost & ", ", repeatTimes) Inače accountName = accountName & ", " & WorksheetFunction.Rept (raspon ("B" & j) .Vrijednost & ", ", repeatTimes) Završi ako se završi ako Ac tiveCell.Offset (1, 0). Odaberi i = i + 1 j = i + 1 Kraj petlje Ako accountName = Trim (accountName) Ako (Desno (accountName, 1) = ", ") Onda accountName = Lijevo (accountName, Len (accountName) - 1) Završi ako accountName = Zamijeni (accountName, ", ", ", ") Raspon ("D" & writeInCell) .Value = accountName accountName = "" repeatTimes = 0 Sljedeći i Range ("A1"). Odaberite End Sub 

Rješenje 2

Još jedna makronaredba:

 Sub test () Dim accountName, lastRow, writeInCell lastRow = Raspon ("B1"). Kraj (xlDown) .Row Sheets (1) .Odaberite Za i = 2 Do lastRow writeInCell = i accountName = Raspon ("B" & i) .Value Range ("B" & i) .Odaberite Ako (i lastRow) onda Do Do ActiveCell.Offset (1, -1) .Vrijednost "" accountName = accountName & ", " & ActiveCell.Offset (1, 0). Vrijednost ActiveCell.Offset (1, 0). Odaberite i = i + 1 kraj petlje ako je raspon ("C" & writeInCell) .Value = accountName 

Rješenje 3

  • 1. Stvorite mapu u pogonu za lakši pristup, npr. C :. (Imenujte nešto povezano s Upravljačkom pločom, npr. Korisnici.)
  • 2. Stvorite novu datoteku u Notepadu i kopirajte i zalijepite sljedeće u nju:

 korisnika korisnika {21EC2020-3AEA-1069-A2DD-08002B30309D} 
  • 3. Zamijenite "Users" s nazivom mape koju ste stvorili i spremite je kao loc.bat.

(Sada biste trebali moći vidjeti svoju mapu i datoteku loc.bat, s loc.bat u istom direktoriju kao i mapa Ne u njoj.)

  • 4. Sada desnom tipkom miša kliknite i stvorite drugu tekstualnu datoteku. Kopirajte i zalijepite sljedeće u njega:

 korisnici. {21EC2020-3AEA-1069-A2DD-08002B30309D} Korisnici 

(Svakako zamijenite riječ "Korisnici" nazivom mape.)

  • 5. Spremite ga kao key.bat.
  • 6. Sada biste trebali vidjeti datoteke loc.bat i key.bat u istom direktoriju kao i mapa koju ste stvorili.
  • 7. Sada, sve što trebate učiniti je dvaput klik na loc.bat datoteku i mapa bi trebala imati ikonu koja izgleda kao upravljačka ploča. Ako kliknete na mapu, ona će vas preusmjeriti na Upravljačku ploču i time zaključati mapu.
  • 8. Naravno, da biste ga otključali, jednostavno dvaput kliknite na datoteku key.bat i mapa bi se trebala vratiti u mapu koju ste najprije stvorili.

Bilješka

Zahvaljujući Navaneeth za ovaj savjet na forumu.

Prethodni Članak Sljedeći Članak

Top Savjeta