Excel - palyginkite stulpelį A ir B, pateikiant rezultatus C stulpelyje

Problema

A & B stulpelyje turiu duomenis, kuriuose yra iki 55000 stulpelių, kartais tik 144 stulpelius, kurie atrodo kaip:

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

Čia pirmiausia ieškokite „col“: A pirmasis skaičius yra „2“, o stulpelyje „B“ - „Z“, „A“ ir „Q“, todėl rezultatas yra Z, A, Q vienas svarbiausių dalykų yra poilsio „2“ stulpelyje: A turėtų rodyti tuščią.

1 sprendimas

Tai yra pirmasis makro, kurį galite naudoti:

 Sub testas () Dim accountName, lastRow, writeInCell, pakartoti laikus LastRow = diapazonas ("B1"). Pabaiga (xlDown) .Perplėšimo lapai (1) .Pasirinkti i = 2 Paskutinį kartą rašytiInCell = i Range ("B" ir i) .Pasirinkite accountName = Range ("B" ir i) .Value If (Range ("C" & i) .Value "") Tada pakartokiteTimes = CInt (intervalas ("C" & i). Vertė) Pabaiga Jei Jei kartojamaTimes> 1 Tada accountName = WorksheetFunction.Rept (accountName & ", ", pakartoti laiką) Pabaiga Jei j = i + 1 accountName = Trim (accountName) Jei (Right (accountName, 1) = ", ") Tada accountName = Left (accountName, Len (accountName) - 1) Pabaiga Jei If (i lastRow) Tada atlikite iki ActiveCell.Offset (1, -1) .Value "" pakartotiTimes = 0 Jei (intervalas ("C" & j). CInt (diapazonas ("C" ir j) .Value) Pabaiga Jei kartojamaTimes> 0 Tada accountName = Trim (accountName) Jei (Right (accountName), 1) = ", ") Tada accountName = accountName & WorksheetFunction.Rept (intervalas ( "B" ir j) .Value & ", ", pakartoti laikus) Else accountName = accountName & ", " & WorksheetFunction.Rept (intervalas ("B" ir j) .Value & ", ", pakartoti laikus) Pabaiga, jei pabaiga Jei Ac tiveCell.Offset (1, 0) .Pasirinkite i = i + 1 j = i + 1 kilpos pabaiga Jei accountName = Trim (accountName) Jei (Right (accountName, 1) = ", ") Tada accountName = Left (accountName, Len (accountName) - 1) Pabaiga Jei accountName = Pakeiskite (accountName, ", ", ", ") Range) ("D" ir rašytiInCell) .Value = accountName accountName = "" pakartotiTimes = 0 Next i Range ("A1"). Pasirinkite End Sub 

2 sprendimas

Kita makro:

 Sub testas () Dim accountName, lastRow, writeInCell lastRow = diapazonas ("B1"). Pabaiga (xlDown) .Perplėšimo lapai (1) .Pasirinkite i = 2 Norėdami paskutinį kartą rašytiInInCell = i accountName = Range ("B" ir i) .Value Range ("B" ir i) .Pasirinkite If (i lastRow), tada atlikite iki ActiveCell.Offset (1, -1) .Value "" accountName = accountName & ", " & ActiveCell.Offset (1, 0). Vertė ActiveCell.Offset (1, 0) .Pasirinkite i = i + 1 kilpos galą, jei diapazonas ("C" ir rašytiInCell) .Value = accountName Kitas i Pabaiga 

3 sprendimas

  • 1. Sukurkite aplanką, kad galėtumėte lengvai pasiekti, pvz., C :. (Pavadinkite jį, susijusį su Valdymo skydu, pvz., Naudotojai.)
  • 2. Sukurkite naują failą Notepad ir nukopijuokite ir įklijuokite į jį:

 Ren Vartotojai Vartotojai. {21EC2020-3AEA-1069-A2DD-08002B30309D} 
  • 3. Pakeiskite „Vartotojai“ su sukurto aplanko pavadinimu ir išsaugokite failą kaip loc.bat.

(Dabar turėtumėte matyti aplanką ir failą loc.bat, lokalizuojant tą patį katalogą kaip ir aplanke Not in.)

  • 4. Dabar dešiniuoju pelės mygtuku spustelėkite ir sukurkite kitą tekstinį failą. Nukopijuokite ir įklijuokite į jį:

 ren Vartotojai {21EC2020-3AEA-1069-A2DD-08002B30309D} Vartotojai 

(Būtinai pakeiskite žodį „Vartotojai“ su savo aplanko pavadinimu.)

  • 5. Išsaugokite jį kaip key.bat.
  • 6. Dabar turėtumėte pamatyti loc.bat ir key.bat failus tame pačiame kataloge kaip ir sukurtas aplankas.
  • 7. Dabar viskas, ką jums reikia padaryti, dukart spustelėkite failą loc.bat, o aplanke turėtų būti piktograma, kuri atrodo kaip valdymo skydelis. Jei spustelėsite aplanką, jis turėtų nukreipti jus į Valdymo skydą ir taip užrakinti aplanką.
  • 8. Žinoma, norėdami jį atrakinti, tiesiog dukart spustelėkite „key.bat“ failą ir aplankas turėtų pasukti atgal į aplanką, kurį pirmą kartą sukūrėte.

Pastaba

Ačiū Navaneeth už šį patarimą forume.

Ankstesnis Straipsnis Kitas Straipsnis

Geriausi Patarimai