Archive for 7月 30, 2015

ドロップダウンリストの3段以上の連携VBA

アイキャッチ画像は、いつも可愛いさつきさんですw

 

 

 

 

上位のドロップダウンリストの選択結果によって、次のドロップダウンリストの内容(選択肢)が自動的に変わる(演算される)ものを作ってみました。

今回のサンプルは4段階のものですが、3段階以上10段階とかも作ることは可能ですw

基本的には、最初と最後は処理が少し違いますが、途中は同じ関数として作ることができますw

詳しい説明は追って追加しますが、今回は概要とコードを紹介しますw サンプルのExcelファイルは、こちらにアップしておきますw

http://www.tottemohimadesi.esy.es\upload\Excel_VBA\Related_DropdownList.zip

 

中央にある表が対象のデータで、その上に、4つのドロップダウンリストを設けています。

表の下には演算のための補助として、演算する選択項目の行範囲の記録する部分、さらには、ドロップダウンメニューの項目、またその範囲を作成する場所を設けています。

Excel-01
ドロップダウンにするデータを格納する場所を下図の様に範囲を指定して、選択範囲に名前を付けます。今回の例では4か所を設定します。

Excel-02

Excel-03
左上のエリアで作成した領域名を確認できます。

Excel-04
そして、ドロップダウンリストを作成し、「元の値」に、先ほど設定した領域名を利用します。

 

Excel-06
ドロップダウンリストで、値を選択して行くと、次のドロップダウンリストが新たに演算で設定され、絞り込みされていく様になっています。

Excel-07
どの段階であってもリスト対象が1つに絞り込まれた段階で、結果が出る様になっています。

Excel-08

 

それでは、簡単な解説です。

ここの部分は、対象のセルの内容が変更になった時に自動実行する部分です。ただし、ここの部分はデバッグの時に邪魔になるので、デバッグが完了してから一番最後に記入しましょうw

次の部分は、一番最初のドロップダウンリストのリスト項目を演算する部分です。

ただし、リセットする機能もあるので、演算の結果や途中の演算で使用する部分の内容を消去しています。

演算事態は簡単で、ドロップダウンリストの項目になる部分からリストする項目をチョイスしています。具体的には、空白部分を無視してドロップダウンリスト用の項目を記載するエリアに詰めて記載しています。

次の部分はメインになる部分です。

このドロップダウンリストで選択された項目に応じて、次のドロップダウンリストを演算する部分です。

まず、ここで選択された項目を使って、その対象となる次のドロップダウンリストの項目の範囲(最初の行と最後の行)を演算しています。

そして、最初のドロップダウンリストと同様に、利用するドロップダウンリストに利用する項目を拾い出しています。具体的には空白部分を無視して、ドロップダウンリストの項目になるエリアに書き出しています。

なお、ドロップダウンリストの選択肢が1つしかない場合は、結果が決まっているので、結果を自動演算するセルに、勝ち抜いた行を記入しています。

一工夫しているのは、直接結果を演算するのではなく、結果を導くための値(この例では行)を、指定の場所に書込み、そのセルの値変化で自動演算する様にしています。

今回は行で結果を導く様にしていますが、今回の例では「分類4」の文字列にすることもできますし、いろいろな演算をして結果を導くこともできます。

次は、最後のドロップダウンリストの部分です。

ここでは、

 

 

最後は、セルの内容が変更された場合に演算する部分です。

ドロップダウンリストを選択した部分は、列番号を持って単にメインの関数を呼び出しています。

そして結果を演算する部分は、指定のセルに勝ち抜いた行数を入れると結果を演算する様にしています。

 

Javascript でグラフ

よさそうなものはいろいろとありますが、「jQuery-Visualize」がお手軽そうです。グラフのオプション指定は必要ですが、基本的には表を作れば自動でグラフ化できます。

自分は Access で作ったデータベースから必要に応じたレポートを作成し、グラフ化することに利用しています。

 

 

jQuery-Visualize
https://www.filamentgroup.com/lab/update-to-jquery-visualize-accessible-charts-with-html5-from-designing-with.html

基本形:
$(‘table’).visualize();

オプション:
type: ‘bar’, ‘area’, ‘pie’, ‘line’
width: number
height: number
appendTitle: boolean(‘true’,’false’
title: string. (table’s Caption element)
appendKey: boolean
colors: array(Default:’#be1e2d’,’#666699′,’#92d5ea’,’#ee8310′,’#8d10ee’,’#5a3b16′,’#26a4ed’,’#f45a90′,’#e9e744′])
textColors: array
parseDirection: string. ‘x’,’y’
pieMargin: number(Default: 20)
pieLabelPos: string(‘inside’,’outside’)
lineWeight: numberDefault: 4.
barGroupMargin: number(Default: 10)
barMargin: number(Default: 1)

 
ccchart
http://ccchart.com/

 

Chart.js
http://www.chartjs.org/

 

Google Chart Tools
http://yohshiy.blog.fc2.com/blog-entry-195.html