gototopgototop

ExcelCâu hỏi :

Xin hướng dẫn cách lấy dữ liệu nhập ở các file Excel khác và tự động update vào 1 file chính, việc update thực hiện qua mạng LAN hoặc copy thuần túy các file dữ liệu của các cá nhân nhập liệu khác lên một thư mục nào đó.

Trả lời :

Nếu bạn cho phép nhập dữ liệu bởi nhiều người trên nhiều file Excel riêng biệt và muốn tổng hợp dữ liệu nhập thành 1 file Excel duy nhất, bạn có thể viết ứng dụng thực hiện việc tổng hợp dữ liệu theo yêu cầu. Mỗi khi cần tổng hợp, bạn chỉ cần kích hoạt ứng dụng tương ứng.

Bạn có thể viết ứng dụng bằng bất kỳ ngôn ngữ của Microsoft nào (VC++, VB, VB .Net, VC#..) và dùng đối tượng "Excel Automation Server" để truy xuất nội dung các file Excel.


Thí dụ sau đây là qui trình xây dựng 1 ứng dụng VB 6.0 đơn giản demo việc copy 1 vùng dữ liệu nằm trong các cell từ A1:H100 trên worksheet có tên là SourceSheet nằm trên file Excel "c:\user1Data.xls" vào vùng cell từ a101:H200 trên worksheet có tên là DestSheet nằm trên file Excel "c:\user2Data.xls":


1. Chạy VB 6.0, tạo Project mới thuộc loại "Standard EXE" (loại Project mặc định có 1 Form giao diện rỗng ban đầu).

2. Chọn menu Project.References để hiển thị cửa sổ Refrerences. Duyệt tìm và chọn mục "Microsoft Excel x.y Object Library" để "add" các đối tượng truy xuất file Excel vào Project. Lưu ý x.y là chỉ số version của thư viện các đối tượng Excel được cài trên máy bạn.
3. Tạo 1 button trên Form có tên mặc định là Command1.
4. Nhấn đúp chuột vào button vừa tạo để tạo thủ tục xử lý sự kiện click chuột trên button rồi viết đoạn code thực hiện copy dữ liệu từ file Excel này sang file khác như sau:
Option Explicit
'thủ tục xử lý sự kiện click chuột trên button
Private Sub Command1_Click()
'khai báo các biến cần dùng
Dim oXL As Excel.Application
Dim oWB As Excel.Workbooks
Dim oSheet1 As Excel.Worksheet
Dim oSheet2 As Excel.Worksheet
'khởi động Excel và nhận đối tượng Application.
Set oXL = CreateObject("Excel.Application")
'xác định đối tượng quản lý các file Excel.
Set oWB = oXL.Workbooks
'mở file "c:\user1Data.xls" chứa kết quả
oWB.Add "c:\user1Data.xls"
'mở file "c:\user2Data.xls" chứa dữ liệu cần copy
oWB.Add "c:\user2Data.xls"
'thiết lập biến các worksheet cần truy xuất
Set oSheet1 = oWB.Item(1).Worksheets("DestSheet")
Set oSheet2 = oWB.Item(2).Worksheets("SourceSheet")
'copy nội dung từ SourceSheet sang DestSheet
oSheet1.Range("A101:H200").Value = oSheet2.Range("A1:H100").Value
oWB.Item(1).SaveAs "c:\ketqua.xls"
'đóng các đối tượng workbook (file xls)
oWB.Item(2).Close
oWB.Item(1).Close
'đóng ứng dụng Excel
oXL.Quit
End Sub
5. Chọn menu Run.Start để chạy thử ứng dụng xem nó hoàn thành nhiệm vụ qui định không.

Câu hỏi :
Trong Microsoft Excel có thể nào chỉ in trang chẵn hoặc trang lẻ giống như trong Microsoft Word được không?

Trả lời :
Microsoft Excel không có sẵn chọn lựa chỉ in trang chẵn hoặc trang lẻ giống như trong Microsoft Word. Bạn có thể tham khảo hướng dẫn cách thực hiện ở http://www.rondebruin.nl/print.htm.

Câu hỏi : Tôi tạo một số Macro: Macro1, Macro2, Macro3... trong Word 2003. Xin hỏi làm sao để trên thanh menu của Word xuất hiện một menu mới ví dụ có tên: Macro chính có các menu con tên là nhiệm vụ 1, nhiệm vụ 2, nhiệm vụ 3... thực thi các tác vụ Macro1, Macro2, Macro3 khi click chuột vào?

Có thể đóng gói thành một file Setup được không?

Trả lời :

Bạn có thể gọi tác vụ 'Add' của các đối tượng như CommandBars, CommandBar, CommandBarControls, CommandBarControl,... để tạo mới menu bar, menu popup, menu option,... Thí dụ thủ tục AddMenu sau đây sẽ tạo thêm 1 menu popup có tên là 'My Popup', trong menu popup này có 3 option, mỗi option thực hiện 1 macro tương ứng.
'macro (thủ tục) xử lý option 1
Sub Macro1()
'thí dụ thông báo cho người dùng biết
MsgBox 'Bạn vừa chọn chức năng 1'
End Sub
'macro (thủ tục) xử lý option 2
Sub Macro2()
'thí dụ thông báo cho người dùng biết
MsgBox 'Bạn vừa chọn chức năng 2'
End Sub
'macro (thủ tục) xử lý option 3
Sub Macro3()
'thí dụ thông báo cho người dùng biết
MsgBox 'Bạn vừa chọn chức năng 3'
End Sub

'macro (thủ tục) tạo menu popup và các option của nó

Sub AddMenu()
'định nghĩa các biến cần dùng
Dim CommandBar As CommandBar
Dim myPopup As CommandBarPopup
Dim objCommandBarButton As CommandBarControl
'Tìm menu bar của ứng dụng
Set CommandBar = Application.CommandBars('Menu Bar')
'Tạo menu popup mới trên menu bar
Set myPopup = CommandBar.Controls.Add(msoControlPopup)
myPopup.Caption = 'My Popup'
'Tạo các menu option mới trên menu popup
For i = 1 To 3
Set objCommandBarButton = myPopup.Controls.Add(msoControlButton)
'thiết lập các thuộc tính cho option mới
With objCommandBarButton
.Caption = 'Chuc nang ' & i
.OnAction = 'Macro' & i
.Tag = .Caption
End With
Next i
End Sub

Sau khi viết xong các thủ tục trên, bạn hãy chạy thủ tục (macro) AddMenu bằng cách chọn menu Tools.Macro.Macros, chọn mục AddMenu rồi chọn button Run. Sau khi thủ tục AddMenu chạy xong, bạn sẽ thấy 1 menu popup mới có tên là 'My Popup' phía bên phải trên thanh menu của ứng dụng (Word, Excel...). Và khi bạn chọn 1 trong các option của menu này, macro tương ứng sẽ chạy.

Câu hỏi :
Xin cho biết cách ghép chuỗi số (hoặc chuỗi ký tự bất kỳ) của 2 cell trở lên trong MS Excel.

Trả lời :

Cách đơn giản nhất để ghép dữ liệu của 2 (hay nhiều cell) là dùng toán tử nối ghép (&), thí dụ muốn ghép dữ liệu của cell A1 và B1 lại rồi chứa kết quả vào cell C1, bạn hãy nhập công thức sau vào cell C1:

=a1 & b1

Nếu muốn ghép dữ liệu theo định dạng đặc thù, bạn có thể dùng hàm TEXT() để định dạng từng dữ liệu trước khi ghép chúng lại bằng toán tử &, thí dụ:
=TEXT(A1,"#.#### ") & B1
cho phép định dạng dữ liệu số ở cell A1 về dạng số thực có tối đa 4 ký số lẻ và 1 khoảng trắng đi sau trước khi ghép vào nội dung ở cell B1.

Trong trường hợp cần xử lý phức tạp hơn, bạn có thể viết 1 hàm hay thủ tục VBA để thực hiện chức năng ghép nối đó.

Câu hỏi :
Tôi có bảng tính trong Excel, tại 1 ô ở ngoài bảng tính đó tôi muốn viết ra một chữ thỏa 2 điều kiện:
- Chữ này nằm ở một cột nào đó (vd: cột A)
- Chữ này phải cùng hàng với một chữ (vd: chữ "Test") ở cột khác (vd: cột B).
Xin hướng dẫn.

Trả lời :
Mỗi bảng tính (worksheet) Excel chứa 65536 hàng, mỗi hàng chứa 256 cột, nghĩa là mỗi bảng tính Excel có 65536*256 = 16 triệu cell dữ liệu. Bạn có thể xem và hiệu chỉnh nội dung của bất kỳ cell nào của bảng tính tại bất kỳ thời điểm nào. Việc hiệu chỉnh có thể là thủ công bằng tay hay lập trình bằng đoạn lệnh VBA.

Thường bạn chỉ dùng 1 phần nhỏ của worksheet Excel để chứa bảng dữ liệu và phần còn lại bỏ trống. Để hiệu chỉnh tự động 1 cell nào đó bằng VBA, bạn cần xác định vị trí của cell đó (chỉ số hàng, cột của cell) và nội dung mới cần hiệu chỉnh. Thí dụ macro sau sẽ hiệu chỉnh cell Ai của worksheet hiện hành (i là hàng mà cell Bi chứa nội dung là "Test"):


Sub UpdateCell()

Dim rng As Range
Dim addr As String
'thiết lập vùng cell cần tra cứu
Set rng = Range("$B$1:$B$1000")
For i = 1 To rng.Count
'kiểm tra nội dung từng cell với "Test"
If ("Test" = rng.Item(i, 1).Value) Then
'xác định vị trí cell cần hiệu chỉnh
addr = "$A$" & i
'hiệu chỉnh cell theo giá trị mới
Range(addr).Value = "New value"
Exit For
End If
Next i
End Sub

Câu hỏi :
Dùng hàm VLOOKUP, khi thông số "lookup_value" không có thì kết quả trả về là: #N/A. Có cách nào để thiết lập hàm tự động tìm thông số "lookup_value" ở một sheet khác khi không tìm thấy ở sheet hiện hành?

Trả lời :
Hàm VLookup (hay bất kỳ hàm thư viện nào khác) đều có đặc tả chức năng rõ ràng và xác định, người dùng phải hiểu và sử dụng đúng theo đặc tả của hàm. Bạn tra cứu tài liệu chỉ dẫn về hàm VLookup thì sẽ biết rõ rằng nếu dò tìm không có (và nếu tham số thứ tư của hàm là False) thì hàm sẽ trả về mã lỗi "#N/A". Nếu muốn tìm tiếp 1 hay nhiều sheet khác khi chưa tìm được trong sheet hiện hành, bạn có thể viết 1 hàm user-defined cho riêng mình. Thí dụ hàm MyVLookup do chúng tôi viết như sau:

'Hàm MyVlookup có danh sách tham số y như VLookup

Public Function MyVLookup(val As Variant, r As Range, c As Integer, flag As Boolean) As Variant
'gọi VLookup
MyVLookup = Application.VLookup(val, r, c, flag)
'kiểm tra xem có lỗi không, nếu có trả về 0
If IsError(MyVLookup) Then MyVLookup = 0
End Function

Nếu bạn đặt hàm trên trong 1 file add-ins (thí dụ file *.xla) rồi add vào Excel thì bạn có thể gọi nó ở bất kỳ tài liệu Excel nào. Còn nếu bạn đặt hàm trong 1 module VBA trong file Excel của bạn thì chỉ có file Excel đó dùng được hàm trên thôi.


Bảng dữ liệu Excel có 3 mã hàng: A, B, C. Mỗi mã hàng có 3 loại hàng (1, 2, 3). Cụ thể hàng A1 giá 5000, A2 giá 4500, A3 giá 4000, B1 giá 3000, B2 giá 2500, B3 giá 2000, C1 giá 1000, C2 giá 500, C3 giá 100. Cột A2 có dữ liệu ngẫu nhiên như A1, B2, C3, A3, C3, A1, B1... Cần tính giá trị cột B2 dựa vào bảng dữ liệu và cột A2.

Vấn đề mà bạn cần giải quyết có thể giải quyết bằng các thao tác sau:
• nhập vào bảng tra, bảng này có 9 hàng, mỗi hàng có 2 cột: cột mã hàng và cột giá cả. Giả sử bạn nhập bảng này vào vùng cell từ E1 đến F9.
• nhập danh sách mã hàng cần tính tiền vào 1 cột nào đó, giả sử cột A từ hàng 1.
• nhập công thức tính tiền như sau vào từng cell ở cột tính tiền, thí dụ cột B:
=VLOOKUP(A1,$E$1:$F$9,2)
Lưu ý chỉ cần nhập công thức trên vào cell đầu tiên, sau đó dùng chức năng Copy/Paste để dán công thức vào các cell còn lại của cột tính tiền.

Nguồn: pcworld.com.vn

CÁM ƠN CÁC BẠN ĐÃ GHÉ THĂM WEBSITE CHÚNG TÔI !


TRANH CỔ ĐỘNG

Daihoidang1

Đăng ký - Đăng nhập
Thời gian
JS required
JS required
Thủ tục hành chính VHTT
TTHC
Văn bản Quy phạm pháp luật

CO_DANG_VA_TO_QUOC

Tìm kiếm
Hình ảnh ngẫu nhiên
JA slide show
Video clip
Looking_for2
Liên kết các website

Click

col1-bg

Bình chọn
Bạn quan tâm nội dung nào trong website Phòng VHTT Cam Ranh?
 
Khách đang xem
Hiện có 5 khách Trực tuyến
Lượt truy cập website
mod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_counter
mod_vvisit_counterHôm nay1005
mod_vvisit_counterHôm qua929
mod_vvisit_counterTuần này1934
mod_vvisit_counterTuần trước6910
mod_vvisit_counterTháng này5803
mod_vvisit_counterTháng trước37450
mod_vvisit_counterTổng cộng1149707

Liên kết mạng xã hội
Google Reader: Blogger: Facebook: YouTube: Picasa: Twitter: Hi5: Photo Bucket: Xing: