NỘI DUNG:
Mở file "BangDuLieu_ngaunhien.xlsx" là thực hiện:
1. Tách cột B (Full Name) thành 2 cột Last Name và First Name
2. Gộp 2 cột Last Name (cột C) và First Name (cột D) thành Cột New Full Name (cột E)
3. Tách cột B (Full Name) thành 2 cột Last Name 2 và First Name 2 (Viết theo kiểu tìm hàng cuối cùng tự động)
THỰC HIỆN:
1. Tách cột B (Full Name) thành 2 cột Last Name và First Name
Code:
# === Tách cột
import xlwings as xw
wb = xw.Book(r"C:\tmp\BangDuLieu_ngaunhien.xlsx")
sht = wb.sheets.active
# === tách first name, last name
sht["C:D"].insert()
sht["C2:D2"].value = ["First Name", "Last Name"]
full_names = sht["B3:B11"].value
first_names =[]
last_names=[]
for full_name in full_names:
# full_name = sht["D4"].value
list_fullname = full_name.split(" ") # chuyển về list, căn cứ vào dấu khoảng trắng
list_firstname = list_fullname[:-1] # lấy từ đầu cho đến phần tử gần cuối.
first_names.append(" ".join(list_firstname))
list_lastname = list_fullname[-1] # lấy phần tử cuối cùng
last_names.append(list_lastname)
sht["C3"].options(transpose=True).value = first_names
sht["D3"].options(transpose=True).value = last_names
2. Gộp 2 cột Last Name (cột C) và First Name (cột D) thành Cột New Full Name (cột E)
Code:
# === Tách cột, gộp cột
import xlwings as xw
wb = xw.Book(r"C:\tmp\BangDuLieu_ngaunhien.xlsx")
sht = wb.sheets.active
# === tách first name, last name
sht["C:D"].insert()
sht["C2:D2"].value = ["First Name", "Last Name"]
full_names = sht["B3:B11"].value
first_names =[]
last_names=[]
for full_name in full_names:
# full_name = sht["D4"].value
list_fullname = full_name.split(" ") # chuyển về list, căn cứ vào dấu khoảng trắng
list_firstname = list_fullname[:-1] # lấy từ đầu cho đến phần tử gần cuối.
first_names.append(" ".join(list_firstname))
list_lastname = list_fullname[-1] # lấy phần tử cuối cùng
last_names.append(list_lastname)
sht["C3"].options(transpose=True).value = first_names
sht["D3"].options(transpose=True).value = last_names
# === gộp cột
sht["E:E"].insert()
sht["E2"].value = "New Full Name"
list_fullname= sht ["C3:D11"].value
list_fullname_join =[]
for fn in list_fullname:
list_fullname_join.append(" ".join(fn))
### HOẶC
# list_fullname_join = [" ".join(fn) for fn in list_fullname]
sht["E3"].options(transpose=True).value = list_fullname_join
3. Tách cột B (Full Name) thành 2 cột Last Name 2 và First Name 2 (Viết theo kiểu tìm hàng cuối cùng tự động)
Code:
# === Tách cột (tìm hàng cuối cùng tự động)
import xlwings as xw
wb = xw.Book(r"C:\tmp\BangDuLieu_ngaunhien.xlsx")
sht = wb.sheets.active
# === HOẶC tách first name, last name TỐI ƯU
sht["C:D"].insert ()
sht["C2:D2"].value = ["First Name 2", "Last Name 2"]
last_row = sht[f"B{sht.cells.last_cell.row}"].end("up").row # tìm hàng cuối cùng trong cột B
full_names = sht[f"B3:B{last_row}"].value
def split_fullname(full_name): # hàm tách first name và last name
list_fullname = full_name.split(" ")
list_firstname = list_fullname[:-1]
first_name =" ".join(list_firstname)
last_name = list_fullname[-1]
return [first_name, last_name]
data_fullnames = list(map(split_fullname, full_names)) # trả list of list
sht["C3"].value = data_fullnames
Xong!