Excel - Bandingkan lajur A & B memberi hasil pada lajur C

Isu

Saya mempunyai Data dalam Lajur A & B yang berjalan sehingga 55000 lajur kadang-kadang hanya 144 lajur, yang kelihatan seperti:

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

Di sini mula-mula cari col: A nombor pertama adalah "2" dan dalam lajur: B mempunyai "Z", "A" & "Q" jadi hasilnya ialah Z, A, Q salah satu perkara yang paling penting di sini ialah selebihnya "2" di lajur: A sepatutnya menunjukkan kosong.

Penyelesaian 1

Ini adalah makro pertama yang boleh anda gunakan:

 Ujian sub () Dim accountName, lastRow, writeInCell, repeatTimes lastRow = Range ("B1"). Akhir (xlDown) .Row Sheets (1) .Select For i = 2 To lastRow writeInCell = Pilih. AccountName = Range ("B" & i) .Value If (Range ("C" & i) .Value "") Kemudian repeatTimes = CInt (Range ("C" & i) 1 Kemudian accountName = WorksheetFunction.Rept (accountName & ", ", repeatTimes) End Jika j = i + 1 accountName = Trim (accountName) Jika (Right (accountName, 1) = ", " Kemudian accountName = (accountName) - 1) Akhir Jika Jika (saya lastRow) Kemudian Lakukan ActiveCell.Offset (1, -1) .Value "" repeatTimes = 0 Jika (Range ("C" & j) .Value " Jika (Reputasi (accountName, 1) = ", ") Kemudian accountName = accountName & WorksheetFunction.Rept (Range ( "B" & j) .Value & ", ", repeatTimes) Else accountName = accountName & ", " & WorksheetFunction.Rept (Range ("B" & j) .Value & ", ", repeatTimes) End If End If Ac tiveCell.Offset (1, 0). Pilih i = i + 1 j = i + 1 Loop End Jika accountName = Trim (accountName) Jika (Right (accountName, 1) = " (accountName) - 1) Akhir Jika accountName = Ganti ("Nama", ", ", ", ") Julat ("D" & writeInCell) .Value = accountName accountName = "" repeatTimes = 0 Next i Range ("A1"). Pilih Sub Akhir 

Penyelesaian 2

Satu lagi makro:

 Ujian sub () Dim accountName, lastRow, writeInCell lastRow = Range ("B1"). Akhir (xlDown) .Row Sheets (1) .Select For i = 2 To lastRow writeInCell = i accountName = Range (" .Value Range ("B" & i) .Select If (i lastRow) Kemudian Lakukan ActiveCell.Offset (1, -1) .Value "" accountName = accountName & ", " & ActiveCell.Offset (1, 0). Value ActiveCell.Offset (1, 0). Pilih i = i + 1 Loop End If Range ("C" & writeInCell) .Value = accountName Next i End Sub 

Penyelesaian 3

  • 1. Buat folder dalam pemacu untuk akses mudah, mis. C :. (Namakan sesuatu yang berkaitan dengan Panel Kawalan, misalnya Pengguna.)
  • 2. Buat fail baru di Notepad dan salin dan tampal yang berikut ke dalamnya:

 ren Pengguna Pengguna. {21EC2020-3AEA-1069-A2DD-08002B30309D} 
  • 3. Gantikan "Pengguna" dengan nama folder yang anda buat dan simpan fail tersebut sebagai loc.bat.

(Anda kini dapat melihat folder anda dan fail loc.bat, dengan loc.bat dalam direktori yang sama dengan folder Tidak di dalamnya.)

  • 4. Sekarang, klik kanan dan buat fail teks lain. Salin dan Tampal yang berikut ke dalamnya:

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

(Pastikan untuk menggantikan kata "Pengguna" dengan nama folder anda.)

  • 5. Simpan sebagai key.bat.
  • 6. Sekarang anda harus melihat loc.bat dan fail-fail key.bat dalam direktori yang sama dengan folder yang anda buat.
  • 7. Sekarang, yang perlu anda lakukan ialah klik dua kali pada fail loc.bat dan folder harus mempunyai ikon yang kelihatan seperti panel kawalan. Sekiranya anda klik pada folder, ia akan mengarahkan anda ke Panel Kawalan dan dengan itu anda telah mengunci folder tersebut.
  • 8. Sudah tentu, untuk membuka kuncinya, hanya klik dua kali pada fail key.bat dan folder tersebut harus kembali ke folder yang anda buat terlebih dahulu.

Catatan

Terima kasih kepada Navaneeth untuk tip ini di forum.

Artikel Sebelumnya Artikel Seterusnya

Tip-Tip Utama