Excel: Cách tạo nhiều bản ghi từ một bản ghi


0

Tôi có một cơ sở dữ liệu của một số công ty. Có một kỷ lục cho mỗi công ty. Trong mỗi hồ sơ công ty, có nhiều liên hệ.

Làm cách nào tôi có thể tạo một bản ghi cho mỗi LIÊN HỆ (lưu giữ tất cả thông tin công ty giống nhau cho từng)?

Đây là một mẫu:

Dòng dữ liệu mẫu - một công ty, nhiều tên / email liên hệ


1
Đây có phải là các cột chính xác trên sổ làm việc của bạn? Ví dụ của bạn cho thấy những gì dường như là 4 liên hệ nhưng 1 không có trường địa chỉ email (cột SM ). Đúng không?
Kẻ giả mạo Twisty

Đó là một ví dụ ... và tôi vô tình giấu cột SM. Thực tế có 6 hoặc 7 địa chỉ email và nhiều lĩnh vực khác. Tôi chưa mua cơ sở dữ liệu, nhưng tôi muốn chuẩn bị sẵn sàng để nhập vào CRM khi tôi làm.
Morgan Wood

1
ĐƯỢC. Tôi chắc chắn điều này có thể được thực hiện trong Excel, nhưng nó sẽ dễ dàng hơn trong Access (giả sử bạn biết cách sử dụng Access).
Kẻ giả mạo Twisty

Tôi đồng ý với Twisty. Một cơ sở dữ liệu là con đường để đi. Đây là vấn đề phổ biến nhất mà mọi người đều muốn Excel là cơ sở dữ liệu, chỉ là không phải vậy. Đó là một bảng tính với rất nhiều "thủ thuật". Về cơ bản, bạn phải thêm một hàng phụ bên dưới mỗi liên hệ và sao chép thông tin trên mỗi liên hệ. Trong ví dụ của bạn đó là 3 liên hệ? Vì vậy, bạn cần hai hàng được chèn bên dưới và sau đó sao chép (sao chép) thông tin xuống. Nhưng bạn muốn tự động này phải không? Nếu bạn không phải là lập trình viên, đôi khi đó chỉ là một nhiệm vụ dài vì hầu hết các tác vụ trong Excel là.
ejbytes

Một điều nữa về việc giữ cơ sở dữ liệu, đó là những gì bạn đang theo đuổi, là tất cả các trường phải giống nhau cho từng Công ty hoặc từng bản ghi (hàng). Những gì bạn hiển thị là một bản ghi với nhiều trường tùy chỉnh. Một bản ghi bình thường cho thông tin liên lạc là Tên, Địa chỉ, Thành phố, Bang, Zip, Điện thoại, Email, Điện thoại Alt, Ghi chú. Hoặc tương tự. Giống như tôi đã nói bạn đưa ra một mẫu giả để tôi không biết bạn có loại kỹ năng lưu trữ hồ sơ nào. Tôi khá chắc chắn rằng bạn phải bắt đầu điều chỉnh nó bằng tay. Một điều tôi làm là bắt đầu với các Macro nhỏ (ví dụ: di chuyển xuống, chèn hai hàng, di chuyển xuống 3 lần ... làm điểm bắt đầu).
ejbytes

Câu trả lời:


2

Điều này sẽ đủ cho ví dụ của bạn. Bạn sẽ cần sửa đổi một chút để phù hợp với cơ sở dữ liệu thực.

Example Data

Company | Address | City  | State | ZIP | Phone | GM | EmailGM | PD | EmailPD | SM | EmailSM | PRM | EmailPRM
ABC     | 1234 M  | Saint | MN    | zip | phone | gm | gm1@gm  | pd | pd1@pd  | sm | sm1@sm  | prm | prm@prm

Result

Company | Address | City  | State | ZIP | Phone | Name | Email
ABC     | 1234 M  | Saint | MN    | zip | phone | gm   | gm1@gm
ABC     | 1234 M  | Saint | MN    | zip | phone | pd   | pd1@pd
ABC     | 1234 M  | Saint | MN    | zip | phone | sm   | sm1@sm
ABC     | 1234 M  | Saint | MN    | zip | phone | prm  | prm1@prm

Company column (and Address, City, State, ZIP, Phone)
=INDIRECT("A"&(CEILING((ROW()+1)/4-1, 1)))

Name column (and Email)
=INDIRECT(CHAR(CODE("G")+MOD((ROW()-2), 4)*2)&CEILING((ROW()-1)/4+1, 1))

Giải trình

Tại cột Công ty, công thức đề cập đến "A"cột và số hàng được tính từ hàng hiện tại.

ROW()-1điều chỉnh lại số hàng, bởi vì chúng ta có tiêu đề trong bảng dữ liệu. Chúng tôi sử dụng số 1 vì dữ liệu bảng dữ liệu bắt đầu ở hàng 2 , thay vì hàng 1 .

/4 + 1về cơ bản sao chép hàng kết quả 4 lần , sau đó điều chỉnh số hàng kết quả theo một, bởi vì chúng ta có tiêu đề trong bảng dữ liệu. Chúng tôi sử dụng số 4 vì chúng tôi có 4 tên và email . Chúng tôi sử dụng số 1 vì dữ liệu bảng dữ liệu bắt đầu ở hàng 2 , thay vì hàng 1 .

CEILING( ... , 1 ) làm tròn số hàng lên tới một số nguyên.


Tại cột Tên, công thức đề cập đến "G"cột và số hàng được tính từ hàng hiện tại.

(ROW()-2)thay đổi kết quả MODtrở lại 0. Chúng tôi sử dụng số 2 vì dữ liệu bảng kết quả bắt đầu ở hàng 2 .

MOD( ... , 4)tính toán cột nào để có được. Kết quả của 0cột có nghĩa là cột G, 1có nghĩa là cột H, v.v. Chúng tôi sử dụng số 4 vì chúng tôi có 4 tên và email .

+ ... * 2dịch chuyển cột được tải về bên phải của cột Gbằng the result of modulo, multiplied by 2. Chúng tôi sử dụng số 2 vì chúng tôi có 2 cột, Tên và Email, để tìm nạp.

CODE("G") chuyển đổi char "G" thành mã ASCII của nó.

CHAR( ... ) chuyển đổi giá trị của cột đã dịch chuyển (7 thành 11, nghĩa là "G" thành cột "K" chẳng hạn) trở lại chuỗi.

CEILING( ... ) đưa ra số hàng dữ liệu được tìm nạp.

Chỉ dẫn

Chỉ cần thay đổi chữ cái cột thành cột phù hợp.

Thí dụ:

cho cột Địa chỉ, thay đổi chữ cái "A"thành"B"

cho cột Email, thay đổi chữ cái "G"thành"H"

chú thích

Bạn đã đề cập bạn sẽ có 7 tên và email . Bạn sẽ cần điều chỉnh công thức để sử dụng 7 thay vì 4.

Công thức này nhạy cảm với nơi bạn đặt công thức này. Công thức này giả định rằng bạn sẽ đặt nó ở hàng 2 (hàng 1 cho tiêu đề). Bạn sẽ cần điều chỉnh nếu bạn đặt nó ở hàng 1 (xem Giải thích )

Công thức này không bỏ qua tên trống và email. Tất cả các công ty sẽ có chính xác 4 hàng, bất kể số lượng tên và email có sẵn.

Điều này không nhằm thay thế cơ sở dữ liệu , nhưng bạn có thể sử dụng dữ liệu được tạo bởi công thức này để tạo cơ sở dữ liệu.


Ồ Cảm ơn bạn đã phản hồi chu đáo và kỹ lưỡng! Tôi hiểu rằng Excel là ít hơn tối ưu. Tôi không có quyền truy cập vào Access - tôi cũng không có bộ não để tìm ra cách thực hiện nó ở đó {có lẽ tôi có thể thuê ai đó ...}. Danh sách này có vài nghìn tên, MACHI với tối đa 7 liên hệ khác nhau. Tuy nhiên, trong nhiều tổ chức này, cùng một liên hệ có thể đảm nhận nhiều vai trò, do đó tôi sẽ gặp vấn đề trùng lặp một khi tôi đã tách các bản ghi. Tôi sẽ chơi với công thức này và xem liệu tôi có thể thành thạo nó không. CẢM ƠN BẠN RẤT NHIỀU!
Morgan Wood

0

Một cách khác để làm điều này, trong Excel, là với Power Queryhoặc Data ► Get and Transform ► From Table(phụ thuộc vào phiên bản Excel)

Sau khi vào trình soạn thảo truy vấn, chọn các cột lặp lại và UNPIVOT các cột khác. Điều này sẽ cung cấp cho bạn một bảng như thế này:

nhập mô tả hình ảnh ở đây

Lưu ý rằng tôi đã đổi tên các cột mới được tạo bởi hoạt động UNPIVOT.

Bây giờ thêm một cột thứ ba, gắn nhãn "Email" và nhập công thức này vào I2

I2: =IF(ISERR(SEARCH("email",[@Position])),H3,"")

nhập mô tả hình ảnh ở đây

Sau đó, nó chỉ đơn thuần là vấn đề lọc các Khoảng trống từ cột Email. Bạn có thể làm điều đó với một bộ lọc đơn giản; sau đó sao chép / dán các ô hiển thị vào vùng kết quả; hoặc bạn có thể sử dụng Bộ lọc nâng cao, có cơ chế gửi kết quả của bộ lọc đến khu vực được chỉ định:

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.