Ghi giá trị vào đúng vị trí trong bảng (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Mr Dolphy

Thành viên mới
Tham gia
12/1/18
Bài viết
25
Được thích
5
Giới tính
Nam
Xin chào các anh chị diễn đàn,

Em xin nhờ sự trợ giúp từ các anh chị vấn đề nhỏ với bảng tính của em:
Em có 2 sheet như hình
Sheet 1: 1600304113017.png Sheet 2: 1600304166697.png

Sheet 1 là bảng giá trị cần điền vào, Sheet 2 là bảng giá trị cần tham khảo với ô B1 (21/09) là giá trị thay đổi theo ngày.
Mục đích của em là khi giá trị Sheet2!B1 thay đổi thì Sheet 1 sẽ tự điền giá trị cho bảng theo tên tương ứng cho đúng ngày. VD: Nếu ngày là 21/09 bên Sheet 2 thì sẽ điền vào cột có ngày 21/09 bên Sheet 1 với các giá trị từ bên Sheet 2 tương ứng. Em đã thử dùng Index và Match nhưng nó chỉ điền vào cột đặt công thức (20/09), giờ làm sao để nó tự điền vào đúng cột ạ, chắc cần 1 công thức phức tạp hơn. Xin giúp em công thức ạ, đừng dùng VBA vì em dùng online qua Google Spreadsheet.

Em không phải là dân chuyên Excel nên loay hoay mấy bữa nay mãi không làm được, đành nhờ các anh chị giúp đỡ, nhìn có vẻ dễ mà em làm mãi ko được, haiza.
Em cám ơn các anh chị.
 

File đính kèm

  • 1600304140516.png
    1600304140516.png
    13.1 KB · Đọc: 3
  • Danh sách.xlsx
    Danh sách.xlsx
    45.4 KB · Đọc: 3
Cái này nói thật là tôi biết có rất nhiều người trả lời được chủ đề của cậu. Và có người đã đọc bài này, nhưng tác giả chủ đề không đưa file lên và chụp hình thì thiếu dữ liệu tên cột và tên hàng, nên họ chịu không cho bạn hàm chính xác được. Bạn là thành viên cũng 2 năm rồi sao vẫn còn lỗi gửi bài như thế, thì ai mà trả lời được. Buồn cho 1 thế hệ, khi hỏi chúng ta cần chú ý là đã cung cấp đủ dữ liệu tối thiếu cho người giải đáp chưa, không thể để người giải đáp đi tìm đáp án phải tự gõ 1 đống dữ liệu từ cái hình của các bạn được.
 
Chuẩn. Mình cũng nghĩ ra cách làm nhưng ...................
 
Trên excel thì chỉ có thể dùng VBA được thôi.
Còn trên Google Sheet thì tôi không biết.
Nhưng mà với việc dùng hàm để nhập liệu từ sheet 2 sang sheet 1 như vậy thì hàm không làm được. Hoặc phải dùng 1 thủ thuật nào đó đặc biệt
 
Cái này nói thật là tôi biết có rất nhiều người trả lời được chủ đề của cậu. Và có người đã đọc bài này, nhưng tác giả chủ đề không đưa file lên và chụp hình thì thiếu dữ liệu tên cột và tên hàng, nên họ chịu không cho bạn hàm chính xác được. Bạn là thành viên cũng 2 năm rồi sao vẫn còn lỗi gửi bài như thế, thì ai mà trả lời được. Buồn cho 1 thế hệ, khi hỏi chúng ta cần chú ý là đã cung cấp đủ dữ liệu tối thiếu cho người giải đáp chưa, không thể để người giải đáp đi tìm đáp án phải tự gõ 1 đống dữ liệu từ cái hình của các bạn được.

Chuẩn. Mình cũng nghĩ ra cách làm nhưng ...................

Ui, thật tình em xin lỗi, không phải là em lười gửi file đính kèm mà em cảm thấy cái này nó dễ với các anh chị nên nhìn hình có thể viết công thức được luôn, khỏi phải mất công mọi người down file về làm. Cho em gửi lại file đính kèm và xin sự trợ giúp lần nữa ạ, em sai ạ, hic.
 
Ui, thật tình em xin lỗi, không phải là em lười gửi file đính kèm mà em cảm thấy cái này nó dễ với các anh chị nên nhìn hình có thể viết công thức được luôn, khỏi phải mất công mọi người down file về làm. Cho em gửi lại file đính kèm và xin sự trợ giúp lần nữa ạ, em sai ạ, hic.
Ngắn gọn như này cho khỏe, vì xác định tư tưởng trước: tên là có thể trùng nhau nên không thể dò theo tên. điều kiện để ra kết quả luôn đúng là tên cả 2 bên file phải được sắp xếp cùng thứ tự như nhau
PHP:
D2=IF(D$1=Check!$D$1,Check!$D2,"")
 
Ngắn gọn như này cho khỏe, vì xác định tư tưởng trước: tên là có thể trùng nhau nên không thể dò theo tên. điều kiện để ra kết quả luôn đúng là tên cả 2 bên file phải được sắp xếp cùng thứ tự như nhau
PHP:
D2=IF(D$1=Check!$D$1,Check!$D2,"")
Tên trong bảng sắp xếp trùng nhau và công thức này chạy thì được, nhưng mà đổi qua ngày khác thì các cột ngày trước sẽ mất hết giá trị ạ.
 
Tên trong bảng sắp xếp trùng nhau và công thức này chạy thì được, nhưng mà đổi qua ngày khác thì các cột ngày trước sẽ mất hết giá trị ạ.
Vậy chỉ có thể là VBA, công thức chỉ dò giá trị đúng trả về kết quả, điều kiện thay đổi thì kết quả công thức thay đổi thôi bạn
 
Vậy chỉ có thể là VBA, công thức chỉ dò giá trị đúng trả về kết quả, điều kiện thay đổi thì kết quả công thức thay đổi thôi bạn
Căng nhỉ, vì file này mình làm buộc phải làm online trên Google Sheet. VBA thì ko chạy được với Google Sheet, haiza.
 

File đính kèm

...Em không phải là dân chuyên Excel nên loay hoay mấy bữa nay mãi không làm được, đành nhờ các anh chị giúp đỡ, nhìn có vẻ dễ mà em làm mãi ko được, haiza.
Em cám ơn các anh chị.
Bạn không phải là dân chuyên nên không hiểu nguyên lý của bảng tính trải rộng.
Bảng tính trải rộng phải chuẩn cột và hàng.

Đòi hỏi của bạn thiếu một số điều kiện xác định bảng tính có chuẩn hay không.
Điển hình: số dòng (số người) có luôn luôn như thế cho mỗi ngày?
Nếu mỗi ngày sheet 'Check' thay đổi thì lấy gì kiểm soát các ngày đã qua?
 
Sao không nhập luôn vào sheet chính cần gì qua cái sheet Check làm cái gì cho nó phức tạp ra
 
Sao không nhập luôn vào sheet chính cần gì qua cái sheet Check làm cái gì cho nó phức tạp ra
Bên mình có thiết bị để ghi log giá trị trả về 1 cột đó theo ngày và cập nhật online như vậy.
Do cái này có nhiều sheet khác nhau tính theo tháng, trải dài cả năm nên nó dài, nhiều file nữa ạ, cái này mình đưa lên điển hình 1 file, nếu chạy được thì chỉ cần trỏ về đúng giá trị là xong.

Bạn không phải là dân chuyên nên không hiểu nguyên lý của bảng tính trải rộng.
Bảng tính trải rộng phải chuẩn cột và hàng.

Đòi hỏi của bạn thiếu một số điều kiện xác định bảng tính có chuẩn hay không.
Điển hình: số dòng (số người) có luôn luôn như thế cho mỗi ngày?
Nếu mỗi ngày sheet 'Check' thay đổi thì lấy gì kiểm soát các ngày đã qua?

Dạ anh, số dòng và số người luôn ổn định, 2 sheet ko cần quan tâm về đúng người cũng được vì đã sắp theo thứ tự giống nhau trên cả 2 sheet, nhưng vấn đề khó là khi ngày thay đổi thì cần đổi cột để ghi dữ liệu vào thôi, dữ liệu những ngày đã qua ko mất để còn thống kê ạ. Công thức như bác Nhattanktnn =IF(D$1=Check!$D$1,Check!$D2,"") là đúng nhưng nó sẽ làm mất dữ liệu những ngày đã qua.
 
Vậy phải tự viết code cho GG Sheet rồi.
Nhưng cập nhật người ta cập nhật theo hàng dọc chứ, ngày mới được điền vào ngày cũ, nhìn ngày tháng trải ra 31 cột. Rồi lại 12 tháng như vậy nữa. Tự mình làm khó mình trong việc thống kê
 
T tìm ra hướng rồi. Nhưng đang bị cấp trên dày cái vụ tính động đất quên không khai báo khối lượng tham gia dao động. Nảy giờ ngồi trình bày cách cứu tôi xong thì mới sang cứu bạn được.
Tôi có code cho bạn đây:
File tôi kèm bên dưới luôn: bạn cứ nhập bên kia nó sẽ nhảy sang bên này khi bạn chọn về sheets T9-20.

Option Explicit
Option Base 1
Sub FindOutData()
Dim RowMe, ColMe, i, j As Long
Dim SheetActiveMe As String
Dim CellCheck As String
Dim CriticalRange() As Variant
On Error Resume Next
SheetActiveMe = Application.ActiveSheet.Name
RowMe = ThisWorkbook.Worksheets("Check").Columns("B").Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows, LookIn:=xlValues).Row
CriticalRange = ThisWorkbook.Worksheets("Check").Range("A2", "D" & RowMe).Value
CellCheck = ThisWorkbook.Worksheets("Check").Range("D1").Value
ColMe = ThisWorkbook.Worksheets(SheetActiveMe).Rows("1").Find(What:=CellCheck, SearchDirection:=xlPrevious, SearchOrder:=xlByColumns, LookIn:=xlValues).Column
RowMe = ThisWorkbook.Worksheets(SheetActiveMe).Columns("B").Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows, LookIn:=xlValues).Row
For i = 2 To RowMe
For j = 1 To UBound(CriticalRange)
If ThisWorkbook.Worksheets(SheetActiveMe).Range("B" & i).Value & ThisWorkbook.Worksheets(SheetActiveMe).Range("C" & i).Value = CriticalRange(j, 2) & CriticalRange(j, 3) Then
ThisWorkbook.Worksheets(SheetActiveMe).Cells(i, ColMe).Value = CriticalRange(j, 4)
Exit For
End If
Next j
Next i
End Sub
 

File đính kèm

Vậy phải tự viết code cho GG Sheet rồi.
Nhưng cập nhật người ta cập nhật theo hàng dọc chứ, ngày mới được điền vào ngày cũ, nhìn ngày tháng trải ra 31 cột. Rồi lại 12 tháng như vậy nữa. Tự mình làm khó mình trong việc thống kê

Vâng bác, mỗi tháng thì chỉ lấy kết quả tầm 12 ngày thôi, rồi chia thành nhiều sheets. Nhưng khổ cái thiết bị bên e nó chỉ trả kết quả đúng vào cột B sheet Check chứ em bày ra nhiều làm gì cho nhọc công.
Nhiệm vụ chỉ là dò đúng ngày rồi điền vào cột đó thôi, ko thay đổi các giá trị cột khác, căng ghê, GG Sheet có viết code được giống VBA hả bác, em chưa biết vụ này.
Bài đã được tự động gộp:

T tìm ra hướng rồi. Nhưng đang bị cấp trên dày cái vụ tính động đất quên không khai báo khối lượng tham gia dao động. Nảy giờ ngồi trình bày cách cứu tôi xong thì mới sang cứu bạn được.
Tôi có code cho bạn đây:
File tôi kèm bên dưới luôn: bạn cứ nhập bên kia nó sẽ nhảy sang bên này khi bạn chọn về sheets T9-20.

Option Explicit
Option Base 1
Sub FindOutData()
Dim RowMe, ColMe, i, j As Long
Dim SheetActiveMe As String
Dim CellCheck As String
Dim CriticalRange() As Variant
On Error Resume Next
SheetActiveMe = Application.ActiveSheet.Name
RowMe = ThisWorkbook.Worksheets("Check").Columns("B").Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows, LookIn:=xlValues).Row
CriticalRange = ThisWorkbook.Worksheets("Check").Range("A2", "D" & RowMe).Value
CellCheck = ThisWorkbook.Worksheets("Check").Range("D1").Value
ColMe = ThisWorkbook.Worksheets(SheetActiveMe).Rows("1").Find(What:=CellCheck, SearchDirection:=xlPrevious, SearchOrder:=xlByColumns, LookIn:=xlValues).Column
RowMe = ThisWorkbook.Worksheets(SheetActiveMe).Columns("B").Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows, LookIn:=xlValues).Row
For i = 2 To RowMe
For j = 1 To UBound(CriticalRange)
If ThisWorkbook.Worksheets(SheetActiveMe).Range("B" & i).Value & ThisWorkbook.Worksheets(SheetActiveMe).Range("C" & i).Value = CriticalRange(j, 2) & CriticalRange(j, 3) Then
ThisWorkbook.Worksheets(SheetActiveMe).Cells(i, ColMe).Value = CriticalRange(j, 4)
Exit For
End If
Next j
Next i
End Sub

Rất cảm ơn bác đã viết code VBA, mà khổ cái là file mình chạy online trên Google Sheet, hình như VBA ko chạy được trên Google Sheet.
 
Lần chỉnh sửa cuối:
Web KT

Bài viết mới nhất

Back
Top Bottom