Pages

Subscribe:

Ads 468x60px

Labels

2013年8月24日 星期六

EXCEL 下拉式選單 - 多階式

EXCEL的下拉選單,大家都知道用資料驗證>>清單,這樣作下拉選單,又快速又輕鬆
之前介紹過一個二階式的下拉選單,這樣可以更輕鬆的輸入資料
而更有許多人在使用上,需要三階、四階選單,甚而更多階的下拉選單
通常參照這些清單位置,會以定義名稱來處理,這裡介紹不須定義名稱,多階式下拉選單的簡便作法

假設下圖為我們所需要輸入的表格:


每一個欄位的下拉選單,都須依照上一個選項而決定內容
而首先,我們必須先建立一個下拉選單對應的資料庫,如下圖


我們必須了解的是,EXCEL驗證清單,是不允許參照其他工作表的
所以比較簡單的作法,是將資料放在同一個工作表中,而針對對應的驗證清單,以不同的公式帶出
如下圖


各欄驗證清單公式如下

A2
=OFFSET($H$1,1,0,COUNTA(H:H)-1,1)

B2
=OFFSET(INDIRECT("H"&MATCH($A2,$H:$H,0)),0,1,1,4)

C2
=OFFSET(INDIRECT("N"&MATCH($B2,$N:$N,0)),0,1,1,3)

D2
=OFFSET(INDIRECT("S"&MATCH($C2,$S:$S,0)),0,1,1,3)

E2
=OFFSET(INDIRECT("X"&MATCH($D2,$X:$X,0)),0,1,1,4)

完成第2列的設定後,在將儲存格往下複製即可~
這樣,馬上就完成一個多階式的下拉選單了
可以參考以下附檔
http://www.FunP.Net/28199


當然,B2:E2 簡便一點,設一個公式就好
在B2的資料驗證清單,利用以下公式
=OFFSET(INDIRECT("R"&MATCH(A2,OFFSET($A$1,,MATCH(A$1,$H$1:$AB$1,)+6,100,1),0)&"C"&MATCH(A$1,$H$1:$AB$1,)+7,),0,1,1,4)

再將B2複製到B2:E10  這樣也可以囉~
可以參考以下附檔
http://www.FunP.Net/574188


因為多階式清單的資料庫,通常很多資料,與輸入表單放在同一個工作表,總會有很混亂的感覺
因此通常會將多階式清單的資料庫放在其他的工作表,再利用定義名稱設定來引用
這裡介紹一個不用定義名稱的方法,但是公式可會複雜多了~
假設輸入表單在"MENU"工作表,表單資料在"DATA"工作表,如下圖







MENU!A2驗證公式為
=INDIRECT("DATA!A2:A10")

B2
=OFFSET(INDIRECT("DATA!A1"),MATCH(A2,INDIRECT("DATA!A:A"),)-1,1,1,3)

C2
=OFFSET(INDIRECT("DATA!G1"),MATCH(B2,INDIRECT("DATA!G:G"),)-1,1,1,3)

D2
=OFFSET(INDIRECT("DATA!L1"),MATCH(C2,INDIRECT("DATA!L:L"),)-1,1,1,3)

E2
=OFFSET(INDIRECT("DATA!Q1"),MATCH(D2,INDIRECT("DATA!Q:Q"),)-1,1,1,3)

與之前一樣,第二列設訂完成後,再往下複製即可完成~
可以下載以下附件參考~
http://www.FunP.Net/122712


如果嫌棄這樣逐一設定太麻煩,B2:E2 也可以用一個公式來設定,
不過這得挑戰您對公式函數的運用能力了
B2:E10 
=OFFSET(INDIRECT("DATA!A1"),MATCH(A2,OFFSET(INDIRECT("DATA!A1"),,MATCH(A$1,INDIRECT("DATA!$1:$1"),)-1,100,1),)-1,MATCH(A$1,INDIRECT("DATA!$1:$1"),),1,3)



參考檔案~
http://www.FunP.Net/412720

以上介紹為不使用定義名稱時,多階式下拉選單作法
其重點多在公式函數的運用,當驗證清單跨工作表時,常常必須使用定義名稱,來簡化公式
以後有機會在來介紹包含定義名稱的多階式下拉選單吧~

http://tw.myblog.yahoo.com/vincent-excel/article?mid=2217&sc=1

火星人的天空之城: Excel-使用多層下拉式清單結構輸入資料(進階)

火星人的天空之城: Excel-使用多層下拉式清單結構輸入資料(進階): 前一篇文章提到:使用多層下拉式清單結構輸入資料(基礎) 參考網址: http://isvincent.blogspot.com/2010/06/excel_25.html 這次要來練習:不需要每個年級都定義一個名稱,而是要以整個基本資料表為單位來查詢。 ...

火星人的天空之城: Excel-使用多層下拉式清單結構輸入資料(基礎)

火星人的天空之城: Excel-使用多層下拉式清單結構輸入資料(基礎): 在Excel中輸入資料,如果完全以Key In方式輸入,除了耗費較多時間之外,還可能打錯字。所以如果能以選取方式來輸入資料,應該可以改善這些問題。解決這個問題,利用資料驗證、INDIRECT函數和定義名稱,可以很簡單的解決。 假設要有三個年級,每個年級的班級名稱都不相同,規則...

2013年8月12日 星期一

BarCodeReader

With BarCodeReader you can give to your robot the capability to read a bar code and perform some operation according to the value of the code read.
Bar code reader is written in the NXT-G environment to give to everyone the possibility to use it in its project.
Following  these simple steps you can realize  your own barcode driven robot!
  1. Equip your explorer robot with the light sensor pointed to the floor to a distance of 1,0 -1,5 cm from it   (see close up in gallery).
  2. Download the BarCodeReader block and save it under your my blocks directory  (usually C:\Documents and Settings\\Documents\LEGO Creations\MINDSTORMS Projects\Profiles\Default\Blocks\My Blocks)
  3. Download the Excel file containing the bar code and print them or make your own barcodes following these simple rules.
  4. Make your project using the  BarCodeReader block with input in NumOfBar plug of number of black strips of your code -1. If you use the BarCode.xls file downloaded from this site, the right value is 5. Read the page Technical Informations for furter informations.
  5. Optionally, you can download the GetStarted sample project (remember to copy the  BarCodeReader block in the right position -see step 2)
    In this case remember that the right sheet to use is the one labeled 23-30.
  6. A black bar is recognized if the ligth sensor read a value < 45. A Value >=45 is interpreted as a white bar. Before launch the program place the light sensor of the robot in a black and in a white area. If the black value or the white area are near to the trigger value of 45 take the right action:
    - move the light sensor a litlle up or down;
    - make a more darker print of the barcode;
    -change the trigger value by editing the barcode.rbt block. (Advanced user only).
  Links

Support this project:Don't forget  to   e-mail your impression for this project to claudio.ditursi@multimatica.it