Hướng dẫn automatically delete columns in excel - tự động xóa cột trong excel

  • #2

hopty,

Chào mừng bạn đến Diễn đàn Mrexcel.

Tôi muốn tạo một macro sẽ tự động xóa các cột bằng tiêu đề nhất định (ví dụ: tên, tiêu đề, v.v.). Bạn có biết nơi tôi có thể tìm thấy công thức như vậy không?

Bạn sẽ cần một macro.

Vui lòng đăng một ảnh chụp màn hình của (các) trang của bạn, những gì bạn có và những gì bạn mong đợi để đạt được, với Excel Jeanie HTML 4 (chứa hướng dẫn đồ họa). http://www.excel-jeanie-html.de/html/hlp_schnell_en.php
http://www.excel-jeanie-html.de/html/hlp_schnell_en.php

  • #3

ABCDEfGH1first

Trên thực tế, sẽ tốt hơn nếu có một macro sẽ tự động giữ các cột bằng các tiêu đề sau, chẳng hạn; First_name, last_name, address_num, city_name và School_color và xóa tất cả các cột khác. Xin lưu ý, tôi sử dụng bảng tính đơn giản này với một vài tiêu đề. Tôi có hơn 50 cột và tôi không muốn sử dụng tham chiếu cột (ví dụ: A1, B1) vì các cột có thể thay đổi nhưng tên của tiêu đề vẫn giữ nguyên khi tôi xuất dữ liệu khác. Lần nữa, cảm ơn bạn đã giành thời gian.

Please note, I use this simple spreadsheet with few headers. My has 50+ columns and I don’t want to use columns reference (e.g., A1, B1) since the columns could change but the header's names remain the same when I export other data. Again, thank you for your time.

  • #4

hopty,

Trước khi macro có dữ liệu đi đến cột 55, BC:

Sổ làm việc Excel
MộtBCDEFGHTôiJKLMNOPQ.
1MộtBCHọHọId_numĐịa chỉ_numTên thành phốMã Bưu ChínhTên trườngSchool_colorTôiJKLMN
2 Johnthợ rèn00-98981111 Thành phố một91212 Bất kỳ trường học nàoTrong khi
3 Hóa đơnHàng không12-12322222 Thành phố hai92345 ThấpMàu đỏ
4 MattChia33-33333333 Thành phố ba92444 CaoMàu xanh da trời

Sheet1

Sau khi vĩ mô:

Sổ làm việc Excel
MộtBCDEF
1HọHọĐịa chỉ_numTên thành phốSchool_color
2Johnthợ rèn1111 Thành phố mộtTrong khi
3Hóa đơnHàng không2222 Thành phố haiMàu đỏ
4MattChia3333 Thành phố baMàu xanh da trời

Sheet1

Sau khi vĩ mô:

Vui lòng kiểm tra điều này đầu tiên trong một bản sao của sổ làm việc của bạn (luôn tạo bản sao lưu trước khi thử mã mới, bạn không bao giờ biết những gì bạn có thể mất).
1. Copy the below macro, by highlighting the macro code and pressing the keys CTRL+C
2. Open your workbook
3. Press the keys ALT+F11 to open the Visual Basic Editor
4. Press the keys ALT+I to activate the Insert menu
5. Press M to insert a Standard Module
6. Paste the code by pressing the keys CTRL+V
7. Press the keys ALT+Q to exit the Editor, and return to Excel.

Thêm macro 1. Sao chép macro bên dưới, bằng cách tô sáng mã macro và nhấn các phím Ctrl+C 2. Mở sổ làm việc của bạn 3. Nhấn các phím Alt+F11 để mở Trình chỉnh sửa Visual Basic 4. Nhấn các phím ALT+I để Kích hoạt menu Chèn 5. Nhấn M để chèn mô -đun tiêu chuẩn 6. Dán mã bằng cách nhấn các phím Ctrl+V 7. Nhấn các phím Alt+Q để thoát trình soạn thảo và quay lại Excel.

Option Explicit
Option Base 1
Sub DeleteColumns()
Dim LC As Long, a As Long, b As Long, d As Long
Dim KeepColArray
Application.ScreenUpdating = False
KeepColArray = Array("First_Name", "Last_Name", "Address_Num", "City_Name", "School_Color")
LC = Cells(1, Columns.Count).End(xlToLeft).Column
For a = LC To 1 Step -1
  d = 0
  For b = LBound(KeepColArray) To UBound(KeepColArray)
    If Cells(1, a).Value = KeepColArray(b) Then
      d = d + 1: If d > 0 Then Exit For
    End If
  Next b
  If d = 0 Then
    Cells(1, a).EntireColumn.Delete
  End If
Next a
Application.ScreenUpdating = True
End Sub

Mã số:

Sau đó chạy macro "Deletecolumns".

  • Đã chỉnh sửa lần cuối: ngày 11 tháng 5 năm 2009

#5

Nó hoạt động !!!

  • Cảm ơn bạn rât nhiêu.

#6
Old thread I know but could this be adapted to delete rows?
I have a list of names that are all preceeded by a number, for example
1-Alan
2-Joan
I want my sheet to delete the entire row for anyone with a preceeding number of 8. Is this possible at all?

Xin chào, chủ đề cũ tôi biết nhưng điều này có thể được điều chỉnh để xóa hàng? Tôi có một danh sách các tên được đặt trước bởi một số, ví dụ 1-Alan 2-joan Tôi muốn tờ của mình xóa toàn bộ hàng cho bất kỳ ai có số lượng trước là 8. Điều này có thể không?

  • Cảm ơn vì bạn đã dành thời gian.

#7

  • Danh sách các tên nằm trong cột nào?

#số 8
Use this script:

Thêm macro 1. Sao chép macro bên dưới, bằng cách tô sáng mã macro và nhấn các phím Ctrl+C 2. Mở sổ làm việc của bạn 3. Nhấn các phím Alt+F11 để mở Trình chỉnh sửa Visual Basic 4. Nhấn các phím ALT+I để Kích hoạt menu Chèn 5. Nhấn M để chèn mô -đun tiêu chuẩn 6. Dán mã bằng cách nhấn các phím Ctrl+V 7. Nhấn các phím Alt+Q để thoát trình soạn thảo và quay lại Excel.

Sub Remove_8()
Application.ScreenUpdating = False
Dim i As Integer
Dim Lastrow As Long
Dim xx As String
Lastrow = Cells(Rows.Count, "A").End(xlUp).Row
    For i = Lastrow To 1 Step -1
    xx = Left(Cells(i, 1).Value, 1) 
        If xx = "8" Then
            Rows(i).Delete
        End If
Next
Application.ScreenUpdating = True
End Sub

  • Mã số:

bobbybrown,

Sau đó chạy macro "Deletecolumns".

Đã chỉnh sửa lần cuối: ngày 11 tháng 5 năm 2009

#5

Nó hoạt động !!!

Cảm ơn bạn rât nhiêu.
Một
1B
2C
3D
4E
5F
6G
7H
8Tôi
9

Sheet1

J

Cảm ơn bạn rât nhiêu.
Một
1B
2C
3D
4F
5G
6Tôi
7
8
9

Sheet1

Sau khi vĩ mô:

Vui lòng kiểm tra điều này đầu tiên trong một bản sao của sổ làm việc của bạn (luôn tạo bản sao lưu trước khi thử mã mới, bạn không bao giờ biết những gì bạn có thể mất).
2. Open your NEW workbook
3. Press the keys ALT + F11 to open the Visual Basic Editor
4. Press the keys ALT + I to activate the Insert menu
5. Press M to insert a Standard Module
6. Where the cursor is flashing, paste the code
7. Press the keys ALT + Q to exit the Editor, and return to Excel
8. To run the macro from Excel press ALT + F8 to display the Run Macro Dialog. Double Click the macro's name to Run it.

Thêm macro 1. Sao chép macro bên dưới, bằng cách tô sáng mã macro và nhấn các phím Ctrl+C 2. Mở sổ làm việc của bạn 3. Nhấn các phím Alt+F11 để mở Trình chỉnh sửa Visual Basic 4. Nhấn các phím ALT+I để Kích hoạt menu Chèn 5. Nhấn M để chèn mô -đun tiêu chuẩn 6. Dán mã bằng cách nhấn các phím Ctrl+V 7. Nhấn các phím Alt+Q để thoát trình soạn thảo và quay lại Excel.

Sub DeleteRowsBeginningWith8()
' hiker95, 06/14/2015, ME389332
Dim rng As Range
With Sheets("Sheet1")   '<-- you can change the sheet name here
  Set rng = .Range(.Range("A2"), .Range("A" & Rows.Count).End(xlUp))
  rng.Replace "8-*", "#N/A", xlWhole, , False
  On Error Resume Next
  rng.SpecialCells(xlConstants, xlErrors).EntireRow.Delete
  On Error GoTo 0
End With
End Sub

Mã số:Excel 2007 or newer, save your workbook, Save As, a macro enabled workbook with the file extension .xlsm, and, answer the "do you want to enable macros" question as "yes" or "OK" (depending on the button label for your version of Excel) the next time you open your workbook.

Sau đó chạy macro "Deletecolumns".DeleteRowsBeginningWith8 macro.

Đã chỉnh sửa lần cuối: ngày 11 tháng 5 năm 2009

  • #5

Nó hoạt động !!!