Chuyển đổi chuỗi thời gian trong cột thành chuỗi thời gian theo hàng trong Excel


0

Tôi đang cố gắng chuẩn bị một bảng tính excel trong đó tôi di chuyển dữ liệu thời gian theo hàng thành các cột khi mỗi danh mục (quốc gia trong trường hợp này) có số điểm dữ liệu khác nhau. Xin lỗi trước nếu tôi không mô tả điều này một cách hoàn hảo.

Tôi sẽ làm rõ điều này bằng một ví dụ. Đây là bản mô phỏng những gì tôi hiện có:

Country         Year     Data
Afghanistan     2000     10  
Afghanistan     2004     12
Afghanistan     2006     15
Afghanistan     2010     30 
Albania         2001     40
Albania         2002     50
Albania         2005     55
Albania         2006     70
Albania         2008     60
Albania         2009     60
Algeria         2000     23
Algeria         2005     30
Algeria         2006     40
Algeria         2007     41
Algeria         2008     39
Algeria         2009     35
Algeria         2010     40  
...

Tập dữ liệu lớn và chạy trong một khoảng thời gian dài hơn.

Những gì tôi muốn tập dữ liệu trông như thế này là:

Country       2000    2001    2002    2003    2004    2005    2006   2007     2008      2009    2010  
Afghanistan:  10                              12              15                                30  
Albania:              40       50                     55      70              60        60  
Algeria:      23                                      30      40     41       39        35      40 
...

Tôi có thể tạo cấu trúc mà tôi muốn khá dễ dàng:

Country      2000    2001     2002     2003    2004   2005    2006   2007     2008     2009    2010  
Afghanistan  
Albania    
Algeria      
...

Nhưng tôi không thể tìm ra cách để điền vào bảng. Tôi nghĩ rằng tôi cần thực hiện một lượt xem hoặc vlookup, chuyển từ cột này sang hàng khác và nó cần xử lý nhiều tiêu chí để khớp - 'quốc gia' + 'năm' (Tôi đã thử kết hợp , nhưng điều đó đã tạo ra quá nhiều điểm dữ liệu: Afghanistan2000, Afghanistan2001, v.v.).

Ngoài ra, bảng trụ dường như không hoạt động vì nó tổng hợp dữ liệu và sao chép các câu lệnh "if (và (" sẽ không hoạt động vì các cột của nó thành các hàng.

Tôi đã truy cập internet và không thể tìm ra công cụ này. Tuy nhiên, tôi chắc chắn có một giải pháp đơn giản, nhưng dường như tôi không thể giải quyết nó.

Nếu bất cứ ai có thể giúp nó sẽ được đánh giá rất cao vì tôi nhận được rất nhiều dữ liệu chuỗi thời gian ở định dạng này.

Câu trả lời:


0

nếu dữ liệu được sắp xếp thì bạn có thể đi cùng INDEX:INDEXMATCHthích cho B2 (Trang tính 1 cho danh sách và Trang tính 2 cho công thức):
trước tiên hãy đặt phạm vi để xem quaMATCH

MATCH(Sheet2!$A2,Sheet1!$A:$A,0)
MATCH(Sheet2!$A3,Sheet1!$A:$A,0)-1

bằng cách này bạn có được hàng đầu tiên và cuối cùng cho đất nước. Bây giờ đặt phạm vi để xem xét.

INDEX(Sheet1!$B:$B,MATCH(Sheet2!$A2,Sheet1!$A:$A,0)):INDEX(Sheet1!$B:$B,MATCH(Sheet2!$A3,Sheet1!$A:$A,0)-1)

Đầu ra sẽ trông giống nhau chỉ cho $C:$C.
Để tìm đúng hàng chúng tôi sử dụng

MATCH(Sheet2!B$1,[Search range formula],0)

Đặt điều này trong công thức đầy đủ

INDEX([output range],[right row])

Vì điều này sẽ lỗi nếu không tìm thấy kết quả khớp, cũng đặt một phần lỗi

IFERROR([full formula],"")

tất cả cùng nhau nó sẽ trông như thế này

=IFERROR(INDEX(INDEX(Sheet1!$C:$C,MATCH(Sheet2!$A2,Sheet1!$A:$A,0)):INDEX(Sheet1!$C:$C,MATCH(Sheet2!$A3,Sheet1!$A:$A,0)-1),MATCH(Sheet2!B$1,INDEX(Sheet1!$B:$B,MATCH(Sheet2!$A2,Sheet1!$A:$A,0)):INDEX(Sheet1!$B:$B,MATCH(Sheet2!$A3,Sheet1!$A:$A,0)-1),0)),"")

Điều này có thể được tự động điền vào bên trái và xuống khi bạn cần nó. Chỉ cần thêm một dòng sau dòng cuối cùng trong cả hai danh sách như "zzz" hoặc quốc gia cuối cùng sẽ không xuất bất cứ thứ gì.

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

Thực hiện bằng điện thoại và có thể có lỗi.


0

Bạn có thể thực hiện việc này mà không cần bất kỳ công thức nào bằng cách xây dựng truy vấn bằng cách sử dụng Get và Transform giả sử bạn đang ở phiên bản Office mới nhất trên Windows.

Đây là cách thực hiện đối với dữ liệu bạn cung cấp:

  1. Đầu tiên, đặt dữ liệu gốc vào một bảng (chọn bất kỳ ô nào trong phạm vi> ALT+N -> T) và đảm bảo cột năm được sắp xếp từ nhỏ nhất đến lớn nhất
  2. Tiếp theo, tạo một truy vấn từ bảng ( ALT+O -> PT)
  3. Trong Trình soạn thảo truy vấn, chuyển đến Transformtab và chọnPivot Column
  4. Đối với Values Columnlựa chọnData
  5. Trên Hometab chọnClose and Load

Điều này xuất ra bảng sau:

Phần tốt nhất về điều này là khi nguồn ban đầu thay đổi, bạn chỉ cần chạy lại truy vấn ALT+A -> R -> Avà nó sẽ điền dữ liệu mới.


0

Đi vào

=SUMPRODUCT((TRIM($A$2:$A$18)=TRIM($E3))*(TRIM($B$2:$B$18)=TRIM(F$2))*$C$2:$C$18)

vào F3và sao chép / kéo nó để điền vào toàn bộ bảng ( F3:P5trong ví dụ):

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

Công thức này đặt 0, khi không có dữ liệu, vì vậy bạn có thể dễ dàng sử dụng IF()hàm nếu bạn cần có các ô trống thay thế.


0

Cảm ơn tất cả mọi người về các đề xuất, tuy nhiên tôi thực sự đã xoay sở để giải quyết vấn đề này bằng cách sử dụng bảng xoay vòng. Tất cả những gì tôi phải làm là tạo một bảng trụ. Đặt các cột thành 'năm', đặt các hàng thành 'quốc gia' và đặt các giá trị thành 'dữ liệu'.

Sau đó tôi chỉ phải đặt 'cài đặt giá trị trường' cho dữ liệu thành 'tối đa' và bảng đã được điền. Mất khoảng 30 giây cuối cùng ...

Bạn có thể truy cập 'Cài đặt giá trị trường' từ menu thả xuống trên trường 'dữ liệu' trong hộp giá trị, trong hộp thoại Trường bảng Pivot.

Cảm ơn một lần nữa cho câu trả lời tôi chắc chắn sẽ thử trận đấu, công thức chỉ mục tại một số điểm.

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.