Excel - Porovnejte sloupec A & B s výsledky ve sloupci C

Problém

Mám data ve sloupci A & B, která běží až 55000 sloupců někdy jen 144 sloupců, což vypadá takto:

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

Zde nejprve hledejte col: První číslo je "2" a ve sloupci: B má "Z", "A" a "Q", takže výsledek je Z, A, Q jedna z nejdůležitějších věcí je zde zbytek "2" ve sloupci: A by mělo být prázdné.

Řešení 1

Toto je první makro, které můžete použít:

 Sub test () Dim accountName, lastRow, writeInCell, repeatTimes lastRow = Range ("B1") Konec (xlDown) .Row listy (1) .Vybrat pro i = 2 Pro lastRow writeInCell = i Range ("B" & i) .Vybrat accountName = Range ("B" a i). Hodnota If (Range ("C" & i). Hodnota "") Pak repeatTimes = CInt (Range ("C" a i). Hodnota) End If Pokud opakované časy> 1 Pak accountName = WorksheetFunction.Rept (accountName & ", ", repeatTimes) Konec Pokud j = i + 1 accountName = Trim (accountName) Pokud (Right (accountName, 1) = ", ") Pak accountName = Left (accountName, Len (accountName) - 1) Konec If If (i lastRow) Pak Do Do ActiveCell.Offset (1, -1) .Value "" repeatTimes = 0 If (Range ("C" & j) .Value "") Pak repeatTimes = CInt (Rozsah ("C" a j). Hodnota) Konec Pokud Pokud je opakováníTime> 0 Pak accountName = Oříznutí (accountName) Pokud (Right (accountName, 1) = ", ") Pak accountName = accountName & WorksheetFunction.Rept (Range ( "B" & j). Hodnota & ", ", repeatTimes) Else accountName = accountName & ", " & WorksheetFunction.Rept (rozsah ("B" & j). Hodnota a ", ", opakované časy) Konec Pokud Konec Pokud Ac tiveCell.Offset (1, 0) .Vybrat i = i + 1 j = i + 1 Loop End Pokud accountName = Trim (accountName) Pokud (Right (accountName, 1) = ", ") Pak accountName = Left (accountName, Len (accountName) - 1) End Pokud accountName = Nahradit (accountName, ", ", ", ") Rozsah ("D" & writeInCell) .Value = accountName accountName = "" repeatTimes = 0 Další i Range ("A1"). Vyberte End Sub 

Řešení 2

Další makro:

 Sub test () Dim accountName, lastRow, writeInCell lastRow = Rozsah ("B1") Konec (xlDown) .Row listy (1) .Vybrat pro i = 2 Pro lastRow writeInCell = i accountName = Range ("B" & i) .Value Range ("B" a i) .Vyberte If (i lastRow) Pak Do Do ActiveCell.Offset (1, -1) .Value "" accountName = accountName & ", " & ActiveCell.Offset (1, 0). Hodnota ActiveCell.Offset (1, 0) .Vyberte i = i + 1 Loop End If Range ("C" & writeInCell) .Value = accountName Další i End Sub 

Řešení 3

  • 1. Vytvořte složku v jednotce pro snadný přístup, např. C :. (Pojmenujte něco, co souvisí s ovládacím panelem, např. Uživatelé.)
  • 2. V programu Poznámkový blok vytvořte nový soubor a do něj zkopírujte a vložte následující:

 ren Uživatelé uživatelů {21EC2020-3AEA-1069-A2DD-08002B30309D} 
  • 3. Nahraďte "Uživatelé" názvem složky, kterou jste vytvořili, a soubor uložte jako loc.bat.

(Nyní byste měli mít možnost vidět složku a soubor loc.bat s loc.bat ve stejném adresáři jako složka Not in it.)

  • 4. Nyní klepněte pravým tlačítkem myši a vytvořte další textový soubor. Zkopírujte a vložte následující:

 ren Uživatelé {21EC2020-3AEA-1069-A2DD-08002B30309D} Uživatelé 

(Nezapomeňte nahradit slovo „Uživatelé“ názvem složky.)

  • 5. Uložte ji jako key.bat.
  • 6. Nyní byste měli vidět soubory loc.bat a key.bat ve stejném adresáři jako složka, kterou jste vytvořili.
  • 7. Nyní stačí, když dvakrát kliknete na soubor loc.bat a složka by měla mít ikonu, která vypadá jako ovládací panel. Pokud kliknete na složku, měli byste ji přesměrovat na Ovládací panely a tím jste složku zamkli.
  • 8. Samozřejmě, pro jeho odemknutí jednoduše klikněte dvakrát na soubor key.bat a složka by se měla vrátit zpět do složky, kterou jste vytvořili.

Poznámka

Díky Navaneeth za tento tip na fóru.

Předchozí Článek Následující Článek

Nejlepší Tipy