Excel - A ve B sütunlarını karşılaştırın, C sütununda sonuç verin.

Konu

Sütun ve Veri sütununda 55000 sütuna kadar çalışan, bazen sadece 144 sütuna benzeyen:

 AB (C sonucu) 2 ZZ, A, Q3 PP, V4 WW 2 A - 2 Q - 3 V - 1 DD 

Burada ilk önce col arayın: A, ilk sayı "2" ve sütununda: B "Z", "A" ve "Q" değerine sahiptir, bu nedenle sonuç Z, A, Q, buradaki en önemli şeylerden biridir. sütununda "2" nin kalanı: A boş göstermelidir.

1. Çözüm

Bu, kullanabileceğiniz ilk makrodur:

 Alt test () Dim hesapAdı, lastRow, writeInCell, repeatTimes lastRow = Aralık ("B1"). End (xlDown) .Row Sayfalar (1) .İ = Seçin lastRow writeInCell = i Range ("B" & i) .Seçilmiş hesapAdı = Aralık ("B" ve i) .Value If (Range ("C" & i) .Value "") O zaman tekrarlayınTimes = CInt (Aralık ("C" & i) .Value) Sona Erirse Süre> 1 Sonra accountName = WorksheetFunction.Rept (accountName & ", ", repeatTimes) Bitiş Eğer j = i + 1 accountName = Trim (hesapAdı) Varsa (Sağ (accountName, 1) = ", ") Sonra accountName = Sol (hesapAdı, Len) (accountName) - 1) Bitirse Bitir (eğer lastRow) Sonra ActiveCell.Offset (1, -1) .Value "" değerini değiştir "" repeatTimes = 0 If (Aralık ("C" & j) .Value "") Sonra repeatTimes = CInt (Range ("C" & j) .Value) Bitirse Sonu tekrar eder> 0 Sonra accountName = Trim (accountName) Varsa (Right (accountName, 1) = ", ") Sonra accountName = accountName & WorksheetFunction.Rept (Range (Range (Aralık)) "B" & j) .Value & ", ", repeatTimes) Başka hesapAdı = hesapAdı & ", " & Çalışma SayfasıFunction.Rept (Aralık ("B" & j) .Value & ", ", tekrarla) tiveCell.Offset (1, 0) .I = i + 1 j = i + 1 Döngüse Son HesapAdı = Kesin (hesapAdı) Varsa (Sağ (hesapAdı, 1) = ", ") Sonra hesapAdı = Sol (hesapAdı, Len (hesapAdı) - 1) Bitiş Eğer HesapAdı = Değiştirirse (hesapAdı, ", ", ", ") Aralık ("D" ve writeInCell) .Value = hesapAdı hesapAdı = "" repeatTimes = 0 Sonraki i Aralık ("A1"). Son Alt Seçin 

2. Çözüm

Başka bir makro:

 Alt test () Dim accountName, lastRow, writeInCell lastRow = Aralık ("B1"). End (xlDown) .Row Sayfaları (1) .I = Seçin LastRow için writeInCell = i accountName = Range ("B" & i) .Value Range ("B" & i) .Seçin (i lastRow) Sonra ActiveCell.Offset (1, -1) .Value "" accountName = accountName & ", " & ActiveCell.Offset (1, 0). Değer ActiveCell.Offset (1, 0) .S = i + 1 Döngü Aralığı Sonunda Döngü Sonu ("C" ve writeInCell) .Value = accountName Next i End Sub 

Çözüm 3

  • 1. Kolay erişim için bir sürücüde bir klasör oluşturun, örn. C:. (Kontrol Paneli ile ilgili bir şey adlandırın, örneğin Kullanıcılar.)
  • 2. Not Defteri'nde yeni bir dosya oluşturun ve aşağıdakini kopyalayıp yapıştırın:

 ren Kullanıcılar Kullanıcılar. {21EC2020-3AEA-1069-A2DD-08002B30309D} 
  • 3. "Kullanıcılar" yerine, oluşturduğunuz klasörün adını yazın ve dosyayı loc.bat olarak kaydedin.

(Artık, klasörünüzü ve loc.bat dosyasını, içinde loc.bat ile aynı klasördeki Not.'u görebilmeniz gerekir.)

  • 4. Şimdi, sağ tıklayın ve başka bir metin dosyası oluşturun. Aşağıdakileri kopyalayıp yapıştırın:

 ren Kullanıcılar. {21EC2020-3AEA-1069-A2DD-08002B30309D} Kullanıcılar 

("Kullanıcılar" kelimesini klasörün adıyla değiştirdiğinizden emin olun.)

  • 5. key.bat olarak kaydedin.
  • 6. Şimdi loc.bat ve key.bat dosyalarını, oluşturduğunuz klasörle aynı dizinde görmelisiniz.
  • 7. Şimdi yapmanız gereken, loc.bat dosyasına çift tıklamak ve klasörün kontrol paneline benzeyen bir simgeye sahip olması gerekir. Klasöre tıklarsanız sizi Kontrol Paneline yönlendirmeli ve böylece klasörü kilitlemelisiniz.
  • 8. Tabii ki, kilidini açmak için, key.bat dosyasına çift tıkladığınızda, klasör ilk oluşturduğunuz klasöre geri dönmelidir.

Not

Forumdaki bu ipucu için Navaneeth'e teşekkürler.

Önceki Makale Sonraki Makale

En Ipuçları