Excel - Salīdziniet A un B kolonnu rezultātus, sniedzot rezultātus C slejā

Izdevums

Kolonnā A & B ir dati, kas vada līdz 55000 slejām, dažreiz tikai 144 slejas, kas izskatās šādi:

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

Šeit vispirms meklējiet col: A pirmais skaitlis ir "2" un kolonnā B ir "Z", "A" un "Q", tāpēc rezultāts ir Z, A, Q viens no svarīgākajiem šeit ir pārējā "2" ailē: A jāparāda tukša.

1. risinājums

Šis ir pirmais makro, ko varat izmantot:

 Sub tests () Dim konta nosaukums, lastRow, writeInCell, atkārtoti laiki LastRow = diapazons ("B1"). Beigas (xlDown) .Rindlapas (1) .Izvēlieties i = 2 Lai pēdējo reizi rakstītuInCell = i diapazons ("B" un i) .Izvēlieties accountName = Range ("B" & i) .Vērtība If (Range ("C" & i) .Value "") Tad atkārtoTimes = CInt (diapazons ("C" & i). Vērtība) Beigas Ja Ja atkārto reizes> 1 Tad accountName = WorksheetFunction.Rept (accountName & ", ", atkārtoti) End Ja j = i + 1 accountName = Trim (accountName) Ja (Right (accountName, 1) = ", ") Tad accountName = Left (accountName, Len (accountName) - 1) Beigas Ja Ja (i lastRow) Tad dariet līdz ActiveCell.Offset (1, -1) .Value "" atkārtotTimes = 0 Ja (Range ("C" & j) .Value "") Tad atkārtojietTimes = CInt (diapazons ("C" & j) .Value) Beigas Ja Ja atkārtoTimes> 0 Tad accountName = Trim (accountName) Ja (Right (accountName, 1) = ", ") Tad accountName = accountName & WorksheetFunction.Rept (diapazons ( "B" & j) .Value & ", ", atkārtoti laiki) Else accountName = accountName & ", " & WorksheetFunction.Rept (diapazons ("B" & j) .Value & ", ", atkārtot laiku) Beigas, ja beigas, ja Ac tiveCell.Offset (1, 0) .Izvēlieties i = i + 1 j = i + 1 Loop End Ja accountName = Trim (accountName) Ja (Right (accountName, 1) = ", ") Tad accountName = Left (accountName, Len (accountName) - 1) Beigas Ja accountName = Aizstāt (accountName, ", ", ", ") Range) ("D" un rakstītInCell) .Value = accountName accountName = "" atkārtotiTimes = 0 Nākamais i Range ("A1"). Izvēlieties End Sub 

2. risinājums

Vēl viens makro:

 Sub tests () Dim kontsName, lastRow, writeInCell lastRow = Diapazons ("B1"). Beigas (xlDown) .Rindlapas (1) .Izvēlieties i = 2 Lai pēdējo reizi rakstītuInCell = i accountName = Range ("B" un i) .Value Range ("B" & i) .Izvēlieties Ja (i lastRow) Tad dariet līdz ActiveCell.Offset (1, -1) .Value "" accountName = accountName & ", " & ActiveCell.Offset (1, 0). Vērtība ActiveCell.Offset (1, 0) .Izvēlieties i = i + 1 Loop End Ja diapazons ("C" un rakstītInCell) .Value = accountName Next i Beigt Sub 

3. risinājums

  • 1. Izveidojiet disku, lai viegli piekļūtu mapei, piemēram, C :. (Nosaukiet to, kas saistīts ar vadības paneli, piemēram, lietotāji.)
  • 2. Izveidojiet jaunu failu Notepad un kopējiet un ielīmējiet to tajā:

 Lietotāju lietotāji. {21EC2020-3AEA-1069-A2DD-08002B30309D} 
  • 3. Nomainiet "Lietotāji" ar izveidotās mapes nosaukumu un saglabājiet failu kā loc.bat.

(Tagad jums jāspēj apskatīt jūsu mapi un failu lok.bat ar loc.bat tajā pašā direktorijā, kurā ir mape Not in.)

  • 4. Tagad ar peles labo pogu noklikšķiniet un izveidojiet citu teksta failu. Kopējiet un ielīmējiet to tajā:

 ren Lietotāji {21EC2020-3AEA-1069-A2DD-08002B30309D} Lietotāji 

(Pārliecinieties, ka vārds "Lietotāji" tiek aizstāts ar mapes nosaukumu.)

  • 5. Saglabājiet to kā key.bat.
  • 6. Tagad jums vajadzētu redzēt loc.bat un key.bat failus tajā pašā direktorijā kā izveidotā mape.
  • 7. Tagad viss, kas jums jādara, ir divreiz uzklikšķiniet uz faila loc.bat un mapei jābūt ikonai, kas izskatās kā vadības panelis. Ja noklikšķināsiet uz mapes, jums vajadzētu novirzīt jūs uz Vadības paneli un tādējādi esat bloķējis mapi.
  • 8. Protams, lai to atbloķētu, vienkārši veiciet dubultklikšķi uz faila key.bat un mapei vajadzētu atgriezties mapē, kuru pirmo reizi izveidojāt.

Piezīme

Paldies Navaneeth par šo padomu forumā.

Iepriekšējais Raksts Nākamais Raksts

Top Padomi