Xem bai viet bang font Unicode


   

PCWorld VN

    Hái: T«i cã mét sè b¶ng tÝnh trong Excel vµ ®· cµi mËt m· cho mçi b¶ng tÝnh. Nh­ng t«i l¹i quªn mÊt ®o¹n m· nªn kh«ng tµi nµo më ®­îc tµi liÖu. Hái cã c¸ch g× më ®­îc tËp b¶ng tÝnh nµy kh«ng?

Tr¶ lêi: VÒ nguyªn t¾c, nÕu b¹n ®· quªn (hay kh«ng biÕt) password cña mét file b¶ng tÝnh (hay bÊt kú file d÷ liÖu cã password nµo) th× b¹n kh«ng thÓ truy xuÊt ®­îc nã. Tuy nhiªn, nÕu b¶ng tÝnh cña b¹n do Excel 5.0 t¹o ra th× b¹n cã thÓ nhê Excel 97 më l¹i ®­îc dï b¹n ®· quªn password.

    Hái: Trong Excel, em ®­îc biÕt nh÷ng hµm t×m kiÕm vµ s¾p xÕp nh­: Vlookup, Hlookup, Lookup, nh­ng nh÷ng hµm nµy chØ t×m kiÕm gi¸ trÞ khi ®· ®­îc s¾p xÕp theo thø tù t¨ng dÇn míi cho kÕt qu¶ chÝnh x¸c. Nay em muèn biÕt cã c¸ch nµo lµm cho sù s¾p xÕp bÊt kú vÉn cho ®­îc kÕt qu¶ tr¶ vÒ t­¬ng øng víi trÞ cÇn t×m chÝnh x¸c kh«ng?

Tr¶ lêi: Hai hµm Vlookup vµ Hlookup cho phÐp t×m kiÕm chÝnh x¸c néi dung trong mét b¶ng cã thø tù hay kh«ng cã thø tù, tïy thuéc vµo trÞ th«ng sè ®­îc truyÒn cho nã. ThÝ dô hµm Vlookup cã header nh­ sau:

VLOOKUP (lookup_value, table_array, col_index_num, range_lookup)

    NÕu b¹n cÇn tra trong b¶ng cã thø tù t¨ng dÇn th× b¹n thiÕt lËp th«ng sè range_lookup = TRUE, ng­îc l¹i nÕu muèn tra trong b¶ng kh«ng cã thø tù th× b¹n thiÕt lËp th«ng sè range_lookup = FALSE.

    L­u ý r»ng kh¸c víi 2 hµm Vlookup vµ Hlookup, hµm Lookup kh«ng cã kh¶ n¨ng t×m kiÕm trªn b¶ng kh«ng cã thø tù. MÆt kh¸c nÕu b¹n muèn tù viÕt cho m×nh c¸c hµm t×m kiÕm, b¹n cã thÓ dïng ng«n ng÷ VBA ®Ó viÕt macro thÓ hiÖn hµm mong muèn.

    Hái: Trong Excel, khi më mét b¶ng tÝnh, cã mét sè cét kh«ng hiÖn ra trªn mµn h×nh mÆc dï c¸c c«ng thøc cã trong b¶ng tÝnh ®Òu cã chøa gi¸ trÞ cña cét ®ã vµ hµng t­¬ng øng. Em lµm theo mäi c¸ch nh­ng vÉn kh«ng thÓ nµo cho cét ®ã xuÊt hiÖn trë l¹i, vËy cã c¸ch nµo lµm chóng xuÊt hiÖn l¹i?

Tr¶ lêi: Trong Excel, b¹n cã thÓ dÊu mét hay nhiÒu cét cña b¶ng tÝnh b»ng c¸ch chän chóng råi thi hµnh chøc n¨ng Format/ Column/ Hide. §Ó giÊu c¸c cét nµy, Excel chØ lµm ®éng t¸c rÊt ®¬n gi¶n: thiÕt lËp ®é réng cña chóng b»ng 0. Do ®ã ®Ó giÊu c¸c cét, b¹n còng cã thÓ thiÕt lËp trùc tiÕp ®é réng cña chóng vÒ 0. NÕu muèn hiÓn thÞ l¹i c¸c cét bÞ Èn, b¹n cã thÓ dïng mét trong 2 c¸ch sau :

- Chän c¸c cét tr¸i vµ ph¶i cña mét hay nhiÒu cét bÞ dÊu, thùc hiÖn lÖnh Format/ Column/ Unhide.

- Chän c¸c cét tr¸i vµ ph¶i cña mét hay nhiÒu cét bÞ dÊu, thùc hiÖn lÖnh Format/ Column/ Width råi nhËp mét gi¸ trÞ kh¸c kh«ng (thÝ dô nh­ 10).

    Hái: Ph­¬ng ph¸p ®Ó viÕt mét hµm riªng trong b¶ng tÝnh Excel 97? Em muèn cã 1 hµm dÞch sè sang ch÷ hoÆc lµm b»ng h×nh thøc nµo ®ã ®Ó dÞch ®­îc. ThÝ dô: Sè 1.250 dÞch thµnh mét ngµn hai tr¨m n¨m m­¬i ®ång?

Tr¶ lêi: Trong b¶ng tÝnh Excel 97, b¹n cã thÓ dïng macro ®Ó viÕt mét hay nhiÒu hµm riªng cho m×nh, sau ®ã g¸n macro cÇn ch¹y víi tæ hîp phÝm hay víi mét nót nµo ®ã. Macro trong Excel 97 lµ mét thñ tôc (subroutine) ®­îc viÕt b»ng ng«n ng÷ Visual Basic for Applications. ThÝ dô sau lµ macro chuyÓn gi¸ trÞ sè cña « ®ang chän sang d¹ng chuçi ký tù råi hiÓn thÞ chuçi nµy trong mét khung héi tho¹i.

‘ Khai bao du lieu
Dim chuso(1 To 10) As String
Dim chu_cach(1 To 4) As String
Dim socandich As Long
‘ Macro doi so sang trang chu
Sub doiso_chu()
Dim ketqua As String
Dim socandoi As Long
Khoidongthongso
socandoi = Int(ActiveCell.Value) ‘ Lay phan nguyen
ketqua = str(socandoi) + " duoc doc la : " + so2chu(socandoi)
MsgBox (ketqua)
End Sub
‘———————————————————————————————
‘ Khoi dong cac trang du lieu chu duoc dung trong chuong trinh
‘———————————————————————————————
Private Sub Khoidongthongso()
chu_cach(1) = "ty"
chu_cach(2) = "ngan"
chu_cach(3) = "trieu"
chuso(1) = "mot"
chuso(2) = "hai"
chuso(3) = "ba"
chuso(4) = "bon"
chuso(5) = "nam"
chuso(6) = "sau"
chuso(7) = "bay"
chuso(8) = "tám"
chuso(9) = "chin"
End Sub
‘——————————————————————————————
‘ Ham doi mot so co toi da 3 ky so thanh trang chu tuong ung
‘——————————————————————————————
Private Function sotram2chu(socandoi As Integer) As String
Dim shangchuc, shangtram, shangdonvi As Integer
Dim str As String
str = ""
‘ Kiem tra so co hop le khong
If socandoi >= 1000 Then
sotram2chu = "???"
Exit Function
End If
‘ Tim 3 ky so mieu ta hang tram, hang chuc va hang don vi
shangtram = socandoi/00
socandoi = socandoi Mod 100
shangchuc = socandoi/10
shangdonvi = socandoi Mod 10
If shangtram >= 1 Then
str = chuso(shangtram) + " tram"
End If
If shangchuc >= 2 Then
str = str + " " + chuso(shangchuc) + " muoi"
ElseIf shangchuc = 1 Then
str = str + " muoi"
End If
If shangdonvi = 0 Then
sotram2chu = str
Exit Function
End If
If shangchuc = 0 Then
If shangtram <> 0 Then
str = str + " le " + chuso(shangdonvi)
Else
str = str + " " + chuso(shangdonvi)
End If
sotram2chu = str
Exit Function
End If
If shangchuc = 1 Then
If shangdonvi <> 5 Then
str = str + " " + chuso(shangdonvi)
Else
str = str + " lam"
End If
sotram2chu = str
Exit Function
End If
If shangdonvi = 1 Then
str = str + " mot"
ElseIf shangdonvi = 5 Then
str = str + " lam"
Else
str = str + " " + chuso(shangdonvi)
End If
sotram2chu = str
End Function
‘——————————————————————————————
‘ Ham doi mot so nguyen bat ky thanh trang chu tuong ung
‘——————————————————————————————
Private Function so2chu(socandoi As Long) As String
Dim idx As Integer
Dim ba_kyso As Integer
Dim str, str_tram As String
Dim tu_ngan_cach As String
idx = 0 ‘ vi tri dau cham phan cach tung 3 ky so
str = ""
str_tram = ""
While socandoi <> 0
ba_kyso = socandoi Mod 1000
socandoi = socandoi/1000
str_tram = sotram2chu(ba_kyso) ‘nen bo cac khoang trong dan dau
If idx = 0 Then ‘ vi tri don vi
str = str_tram
ElseIf Len(str_tram) <> 0 Then ‘vi tri ngan, trieu, ty
tu_ngan_cach = chu_cach((idx Mod 3) + 1)
str = str_tram + " " + tu_ngan_cach + " " + str
ElseIf (idx Mod 3) = 0 Then
str = "ty " + str
End If
idx = idx + 1
Wend
so2chu = str
End Function

    Hái: Trong Excel 7.0, ®Ó t¹o mét macro cã vßng lÆp loop, t«i cã sö dông lÖnh IF xong thö Macro qua tõng b­íc (Step) thÊy m¸y kh«ng thùc hiÖn ®­îc lÖnh IF nh­ t«i mong muèn (cô thÓ lµ kh«ng ph©n biÖt ®­îc "False Value"). Toµn bé có ph¸p Macro Êy nh­ sau (Excel 4.0 macro):

= Select ("R1C1")
= For ("Counter", 1, 10)
= Select ("R[1]C")
= IF ("R[1]C" = "R5c5")
= Copy ("R[1]C")
= Paste ("R15C1")
= End.IF()
= Next ()
= Return ()

    NÕu Macro trªn lµ kh«ng ®óng có ph¸p vËy khi t«i muèn t¹o mét Macro b»ng ng«n ng÷ "Excel 4.0 macro" víi môc ®Ých t×m trong mét cét ®· ®Þnh (vÝ dô C1) c¸c dßng (mÈu tin) cã gi¸ trÞ b»ng mét « ®· ®Þnh (vÝ dô « R5C5) vµ copy c¸c dßng nµy vµo chç riªng th× lµm thÕ nµo?

Tr¶ lêi: Ng«n ng÷ macro Excel 4.0 ®· lçi thêi. Tõ Excel 5.0 trë lªn b¹n cã thÓ viÕt macro b»ng ng«n ng÷ VBA (Visual Basic for Applications). Ng«n ng÷ VBA lµ ng«n ng÷ chuÈn cña Microsoft vµ hÇu hÕt c¸c øng dông cña Microsoft ®Òu hç trî nã. ThÝ dô muèn t×m 10 « ®Çu cña cét 1 ë Sheet1, nÕu cã « nµo b»ng trÞ tham kh¶o ë « C1 th× copy nã sang hµng t­¬ng øng ë cét 2, b¹n cã thÓ t¹o mét macro Excel chøa thñ tôc VBA sau:

Sub SearchCopy()
For Row = 1 To 10
If Application.Cells(Row, 1).Value = Application.Cells(1, 3).Value Then
Application.Cells(Row, 2).Value = Application.Cells(Row, 1).Value
End If
Next Row
End Sub

    Tõ Sheet1 cña Workbook hiÖn hµnh, b¹n nhËp 10 trÞ vµo 10 « ®Çu ë cét 1, nhËp trÞ tham kh¶o vµo « ®Çu ë cét 3, chän menu Insert/ Macro/ Module råi nhËp thñ tôc VBA trªn vµo cöa sæ trèng.

    Sau khi nhËp xong, b¹n chän button Sheet1 ®Ó trë vÒ b¶ng chøa d÷ liÖu. §Ó ch¹y macro tõ Sheet1, b¹n chän menu Tools/ Macro/ SearchCopy/ Run, kÕt qu¶ sÏ hiÓn thÞ ngay ë cét 2.


    Hái: Trong b¶ng tÝnh Excel (Office 97), khi muèn cã nhiÒu dßng trong mét « (cell) th× dïng tæ hîp phÝm Alt+Enter. Cã c¸ch nµo ®Ó c¸c dßng ®­îc dµn ®Òu trong « (nh­ Alignment Justify trong Word) kh«ng? (V× trong Excel chØ cã Left, Right, Center)

Tr¶ lêi: NÕu b¹n muèn chØnh d¹ng v¨n b¶n ë chÕ ®é Justify trong tõng « cña b¶ng tÝnh Excel th× b¹n kh«ng ®­îc dïng tæ hîp Alt-Enter ®Ó c¾t hµng b»ng tay nh­ b¹n ®· lµm. Thùc vËy, b¹n ph¶i nhËp d÷ liÖu liªn tôc cho ®Õn hÕt. MÆc ®Þnh, d÷ liÖu sÏ ®­îc hiÓn thÞ ngang trªn mét hµng (cã thÓ rÊt dµi vµ bÞ che khuÊt bëi d÷ liÖu cña cét bªn ph¶i). B©y giê ®Ó chØnh d¹ng theo chÕ ®é Justify cho « võa nhËp, b¹n chän thùc ®¬n Format.Cells.Alignment, vµ chän Justify trong hép Horizontal råi nhÊn OK.

    Hái: T«i ®ang dïng font ch÷ ViÖt ABC. Khi sö dông trong Excel th× mét sè font bÞ lçi, vÝ dô nh­ font .VnTime khi gâ 'ngµi' th× ra 'ngoi', gâ '®·' th× ra 'do'. Mét sè font kh¸c l¹i kh«ng bÞ.

Tr¶ lêi: NÕu b¹n ch¾c ch¾n chØ cã mét sè font bÞ lçi cßn c¸c font ABC kh¸c vÉn hiÓn thÞ ®óng cïng néi dung nhËp vµo th× lçi lµ do font ®ã bÞ h­ hay kh«ng ®óng m·. Trong tr­êng hîp nµy b¹n nªn xãa font bÞ lçi råi cµi l¹i nã tõ ®Üa gèc xem sao.

    Hái: C«ng viÖc cña t«i yªu cÇu thÓ hiÖn trong b¶ng tÝnh c¶ phÐp tÝnh vµ kÕt qu¶ cña phÐp tÝnh ®ã, v× vËy t«i vÉn ph¶i lµm theo c¸ch thñ c«ng lµ nhËp phÐp tÝnh vµo mét cell (vÝ dô:2*3+5=) sau ®ã sao phÐp tÝnh nµy sang mét cell bªn c¹nh, råi xãa dÊu "=" ë cuèi phÐp tÝnh vµ ®iÒn dÊu "=" lªn ®Çu phÐp tÝnh ®Ó cã kÕt qu¶. §Ò nghÞ cho biÕt trong ch­¬ng tr×nh Excel cã lÖnh hoÆc c«ng cô nµo gióp ng­êi sö dông lÊy nhanh kÕt qu¶ cña phÐp tÝnh víi ®iÒu kiÖn vÉn ph¶i thÓ hiÖn c¶ phÐp tÝnh vµ kÕt qu¶ cña phÐp tÝnh trong b¶n in ra kh«ng?

Tr¶ lêi: §Ó gi¶i quyÕt vÊn ®Ò cña b¹n, b¹n cã thÓ nhËp c«ng thøc theo có ph¸p riªng cña b¹n vµo mét cét, Excel sÏ coi ®©y nh­ lµ chuçi ký tù b×nh th­êng. NÕu cã mét macro viÕt s½n cã nhiÖm vô ®äc tõng « chøa c«ng thøc cña b¹n, dêi dÊu "=" tõ cuèi chuçi vÒ ®Çu chuçi råi ghi c«ng thøc míi vµo « t­¬ng øng ë cét bªn ph¶i th× kÕt qu¶ cña c«ng thøc sÏ ®­îc hiÓn thÞ. Macro tinhcongthuc sau ®©y sÏ gi¶i quyÕt vÊn ®Ò cña b¹n. Qui tr×nh t¹o macro vµ kÕt hîp nã víi mét nót lÖnh ®Ó b¹n dÔ truy xuÊt nã nh­ sau:

- Chän thùc ®¬n Tools.Macro .Macros, nhËp tªn macro cÇn t¹o (thÝ dô tinhcongthuc) vµo môc Macro Name råi chän Create. Tr×nh Visual Basic sÏ ch¹y vµ hiÓn thÞ khung thñ tôc ®Ó nhËp vµo.

- NhËp c¸c lÖnh sau vµo th©n cña thñ tôc tinhcongthuc:

Sub tinhcongthuc()
Dim a, b As String
For Each c In Selection.Cells
a = c.Value
b = Right(a, 1)
If b = ‘=’ Then
a = Left(a, Len(a) - 1)
c.Offset(0, 1).Value = b+a
Else
c.Offset(0, 1).Value = ‘Error’
End If
Next
End Sub

- Chän thùc ®¬n View .Toolbars.Customize, chän nót Command.Macros. KÐo nót Custom button ®Õn mét vÞ trÝ nµo ®ã trªn mét thanh c«ng cô cña Excel. NhÊn phÝm ph¶i vµo nót võa t¹o, chän Edit button Image trong thùc ®¬n xuÊt hiÖn ®Ó thay ®æi h×nh d¹ng ®å häa cña nót. Chän Assign macro ®Ó liªn kÕt nót víi macro tinhcongthuc. Sau cïng, chän Name ®Ó hiÖu chØnh tªn nhËn d¹ng cña nót.

    B©y giê b¹n ®· cã mét nót macro míi víi c¸ch dïng nh­ sau :

- NhËp mét hay nhiÒu c«ng thøc theo có ph¸p riªng cña b¹n vµo mét cét, Excel sÏ xem ®©y nh­ lµ chuçi ký tù b×nh th­êng.

- Chän c¸c c«ng thøc võa nhËp.

- NhÊn nót tinhcongthuc, c¸c lÖnh trong macro sÏ ®­îc thi hµnh vµ b¹n sÏ cã kÕt qu¶ cña c¸c c«ng thøc bªn cét ngay bªn ph¶i. L­u ý viÖc tÝnh c«ng thøc kh«ng thÓ tù ®éng ®­îc, do ®ã nÕu cã sù thay ®æi vÒ c«ng thøc cña b¹n, b¹n ph¶i thùc hiÖn l¹i b­íc nµy ®Ó Excel tÝnh l¹i kÕt qu¶.

    Tïy yªu cÇu, b¹n cã thÓ hiÖu chØnh l¹i gi¶i thuËt cña macro b»ng thùc ®¬n Tools.Macro.Macros chän macro cÇn hiÖu chØnh råi nhÊn nót Edit. Cöa sæ MS Visual Basic chøa m· lÖnh cña macro sÏ hiÖn lªn ®Ó b¹n hiÖu chØnh.

    Hái: Trong qu¸ tr×nh khai th¸c sö dông c¸c c«ng cô trong Excel t«i cã nhu cÇu sao chÐp c«ng thøc theo dßng/cét. Nh­ng hiÖn t«i chØ míi sö dông ®­îc sao chÐp tham chiÕu theo dßng/cét, chøc n¨ng ®Þa chØ t­¬ng ®èi theo dßng/cét hoÆc ®Þa chØ tuyÖt ®èi. Tr­êng hîp cÇn tham chiÕu réng h¬n th× ph¶i thùc hiÖn nh­ thÕ nµo?

- Trong Excel t«i míi chØ thùc hiÖn ®­îc hµm if vµ mét sè hµm kh¸c ®Ó t×m kiÕm theo dßng/cét (ch¼ng h¹n: nÕu « A1 cña sheet 2 b»ng « A1 cña sheet 1 th× « B1 cña sheet 2 b»ng « B1 cña sheet 1...) chø ch­a thùc hiÖn ®­îc yªu cÇu t×m kiÕm toµn bé cét A cho ®Õn khi tháa m·n ®iÒu kiÖn.

Tr¶ lêi: Trong Excel, b¹n cã thÓ tham kh¶o néi dung cña mét hay nhiÒu « kh¸c theo nhiÒu møc ®é kh¸c nhau nh­:

- Tham kh¶o ®Õn « côc bé trªn cïng Worksheet: chØ cÇn miªu t¶ dßng vµ cét cña « cÇn tham kh¶o. VÝ dô nÕu dïng có ph¸p miªu t¶ « d¹ng A1, th× ®Ó tham kh¶o « ë cét C dßng 5 th× ta viÕt C5 (®Þa chØ t­¬ng ®èi) hay $C$5 (®Þa chØ tuyÖt ®èi).

- Tham kh¶o ®Õn « cña worksheet kh¸c trong cïng mét workbook: miªu t¶ tªn worksheet, dßng vµ cét cña « cÇn tham kh¶o. VÝ dô nÕu dïng có ph¸p miªu t¶ « d¹ng A1, ®Ó tham kh¶o « ë cét C dßng 5 cña worksheet tªn lµ dulieunhap th× ta viÕt dulieunhap!C5 (®Þa chØ t­¬ng ®èi) hay dulieunhap!$C$5 (®Þa chØ tuyÖt ®èi).

- Tham kh¶o ®Õn « cña worksheet kh¸c cña mét workbook kh¸c: miªu t¶ tªn workbook, tªn worksheet, dßng vµ cét cña « cÇn tham kh¶o.

    VÝ dô nÕu dïng có ph¸p miªu t¶ « d¹ng A1, th× ®Ó tham kh¶o « ë cét C dßng 5 cña worksheet tªn lµ dulieunhap trong workbook tªn lµ datafile.xls th× ta viÕt [datafile]dulieunhap!C5 (®Þa chØ t­¬ng ®èi) hay [datafile] dulieunhap!$C$5 (®Þa chØ tuyÖt ®èi).

    §Ó t×m kiÕm « cã néi dung nµo ®ã theo dßng/cét cña b¶ng tÝnh, b¹n nªn t¹o mét macro víi ph¸t biÓu lÆp nh­ For, Do, While,... theo cét/hµng.


    Hái: Ch­¬ng tr×nh Excel cña Office 97 trong thùc ®¬n Data cã lÖnh Table. T«i kh«ng biÕt sö dông ra sao tuy ®· cã t×m hiÓu qua ch­¬ng tr×nh trî gióp còng nh­ t×m c¸c s¸ch vÒ Excel nh­ng kh«ng thÊy nãi vÒ lÖnh nµy. Xin cho biÕt c«ng dông, c¸ch sö dông vµ vÝ dô minh häa.

Tr¶ lêi: Thùc ®¬n Data.Table cña ch­¬ng tr×nh Excel 97 cho phÐp b¹n tÝnh c¸c gi¸ trÞ cña mét hµm hai biÕn hay nhiÒu hµm mét biÕn theo c¸c trÞ cña biÕn ®ã. VÝ dô b¹n cã mét hµm hai biÕn f(x, y) nµo ®ã (b¹n ®· biÕt c«ng thøc cña hµm) vµ muèn tÝnh trÞ hµm ®ã theo c¸c trÞ cña x, y, b¹n cã thÓ tiÕn hµnh c¸c b­íc sau :
- Chän mét cell ®¹i diÖn gi¸ trÞ x (vÝ dô lµ A1)
- Chän mét cell ®¹i diÖn gi¸ trÞ y (vÝ dô lµ B1)
- NhËp c«ng thøc cña hµm hai biÕn f(x, y) vµo mét cell kh¸c (vÝ dô lµ B2) víi c¸c biÕn x, y ®­îc thay b»ng c¸c ®Þa chØ cell ®¹i ®iÖn t­¬ng øng (nghÜa lµ A1 vµ B1). L­u ý, c«ng thøc b¾t ®Çu b»ng dÊu "=".
- NhËp d·y c¸c trÞ x cÇn dïng ®Ó tÝnh trÞ hµm vµo cïng hµng víi cell c«ng thøc vµ tõ cell nµy qua ph¶i (tõ C2)
- NhËp d·y c¸c trÞ y cÇn dïng ®Ó tÝnh trÞ hµm vµo cïng cét víi cell c«ng thøc vµ tõ cell nµy trë xuèng (tõ B3)
- Chän khèi ch÷ nhËt cã ®Ønh trªn tr¸i lµ cell c«ng thøc vµ hai c¹nh lµ phÇn hµng cét chøa c¸c trÞ x, y
- Chän thùc ®¬n Data.Table, nhËp ®Þa chØ cell ®¹i diÖn biÕn x vµo hép Row input cell vµ ®Þa chØ cell ®¹i ®iÖn biÕn y vµo hép Column input cell, råi OK.
B¹n sÏ cã ®­îc mét b¶ng gi¸ trÞ cña hµm sè t­¬ng øng víi tõng cÆp trÞ x,y.

    Hái: Khi lµm viÖc trong b¶ng tÝnh Excel, tr­êng hîp c¸c c«ng thøc trong b¶ng kh«ng thùc hiÖn ®­îc th× hiÖn c©u th«ng b¸o lçi. VÝ dô c«ng thøc chia cho 0 sÏ hiÖn #DIV/0! - xem b¶ng)

    VËy cã c¸ch nµo lµm cho c©u th«ng b¸o trªn khi in kh«ng hiÖn ra ®­îc kh«ng? §iÒu kiÖn c«ng thøc ®ã vÉn gi÷ nguyªn kh«ng xãa ®i, cã nghÜa lµ chØ lµm Èn kh«ng cho in ra mµ th«i).

Tr¶ lêi: NÕu doanh thu th¸ng 4 n»m ë cét B vµ doanh thu th¸ng 5 n»m ë cét C th× c«ng thøc so s¸nh n»m ë cét D lµ =C2/B2. Tuy nhiªn c«ng thøc nµy kh«ng ph¶i lóc nµo còng cho kÕt qu¶ ®óng, vÒ mÆt to¸n häc nÕu mÉu sè cña phÐp chia b»ng 0 th× c«ng thøc trªn sÏ v« ®Þnh vµ Excel sÏ b¸o lçi "#DIV/0!". §Ó tr¸nh viÖc hiÓn thÞ (vµ in ra) lçi sai trªn, b¹n nªn söa c«ng thøc trªn thµnh c«ng thøc phøc t¹p h¬n nh­ sau:

=IF(B2<>0,C2/B2,"").

    Víi c«ng thøc míi, ta kiÓm tra mÉu sè tr­íc, nÕu kh¸c kh«ng th× dïng c«ng thøc cò, cßn nÕu mÉu sè b»ng 0 ta sÏ ®Ó trèng kÕt qu¶.

    Hái: 1/ T«i muèn lËp mét Macro trong Excel 97 ®Ó vÏ c¸c ®å thÞ cã c¸c vïng sè liÖu kh¸c nhau vµ cã sè phÇn tö thay ®æi. V× vËy t«i ®· thay ®æi miÒn gi¸ trÞ cña SourceData b»ng c¸ch ®­a vµo c¸c biÕn sè. Tuy nhiªn khi t«i khai b¸o:

ActiveChart.SetSourceData Source:=Sheets ("Do thi"). Range("A24: H48"),
PlotBy:=_xlColumns

    th× m¸y kh«ng b¸o lçi, nh­ng khi t«i thay ®æi c¸ch khai b¸o, ®Ó ®­a c¸c biÕn sè vµo:

Source:=Sheets("Do thi"). Range(Cells(24*m,2),Cells(24*(m+1), 2+songuon)),_
PlotBy:=xlColumns

    m¸y còng b¸o lçi:

Run-time error ‘1004’:
Method ‘Range’ of subject ‘_Global’ failed

    T«i dïng Help th× thÊy dßng th«ng b¸o sau xuÊt hiÖn:

The topic does not exit
Contact your application vender for an updated hel file.

    ThËm chÝ khi t«i ®· khai b¸o l¹i, kh«ng cho c¸c biÕn sè vµo n÷a nh­ sau:

ActiveChart.SetSourceDataSource:= Sheets("Dothi").Range(Cells(24, 2), Cells(48, 8),
PlotBy:=_xlColumns

    th× m¸y vÉn b¸o lçi nh­ trªn. T«i kh«ng hiÓu m×nh ®· m¾c lçi g× trong khai b¸o Source cña ®å thÞ hay lµ hiÖn thêi Excel kh«ng cho phÐp khai b¸o nh­ t«i ®· lµm vµ nÕu nh­ vËy cã c¸ch nµo ®Ó kh¾c phôc hay kh«ng. §©y lµ mét phÇn Macro vÏ ®å thÞ mµ t«i ®· viÕt :

for m=1 to sothang
Set dothi = Sheets("Do thi").ChartObjects.Add(243 * (m - 1), 512, 243, 512)
dothi.Activate
ActiveChart.ChartType = xlColumnStacked
ActiveChart.SetSourceData
Source:=Sheets("Do thi").Range(Cells(24*m, 2), Cells(24*(m+1), 2+songuon)),_
PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="Do thi"
next m

Tr¶ lêi: L­u ý r»ng "Cells" lµ mét method (hay thuéc tÝnh) cña ®èi t­îng, do ®ã b¹n nªn miªu t¶ râ rµng tªn cña ®èi t­îng mµ b¹n cÇn truy xuÊt tr­íc method Cells. Tãm l¹i thñ tôc vÏ nhiÒu ®å thÞ cña b¹n cã thÓ viÕt l¹i nh­ sau :

Dim sothang As Integer
Dim songuon As Integer
Sub vedothi()
sothang = 12
songuon = 3
For m = 1 To sothang
Set dothi = Sheets("Do thi").ChartObjects.Add(243 * (m - 1), 512, 243, 512)
dothi.Activate
ActiveChart.ChartType = xlColumnStacked
Set sRange = Sheets("Do thi").Cells(24*m, 2)
Set eRange = Sheets("Do thi").Cells(24*(m+1), 2+songuon)
ActiveChart.SetSourceData Source:=Sheets("Do thi").Range(sRange, eRange), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="Do thi"
Next m
End Sub

    Víi ®o¹n lÖnh trªn, chóng t«i dïng 2 biÕn sRange vµ eRange ®Ó chøa 2 object miªu t¶ cell ®Çu vµ cuèi cña vïng sè liÖu cÇn cho ®å thÞ. ViÖc dïng 2 biÕn nµy chØ víi môc ®Ých lµm ch­¬ng tr×nh dÔ ®äc (lÖnh SetSourceData sÏ gän h¬n vµ râ rµng h¬n).


   

PcLeHoan 1996 - 2002
Mirror : http://www.pclehoan.com
Mirror : http://www.lehoanpc.net

Mirror : http://www.ktlehoan.com