« 2009年7月 | トップページ | 2009年9月 »

2009年8月

[Excel] 繰り返し計算(シミュレーション)をする方法

例題として、モンテカルロ法(乱数によるシミュレーション)を考える。

Case1:計算が1行で済む場合
・マクロは不要
・各行で乱数を発生させ、それを用いて計算させる

Case2:計算が1行で済まない場合
・以下のように、マクロを使用する
・作成:ツール→マクロ→マクロで、名称を入力して新規作成

 

Sub シミュレーション()

    ActiveSheet.EnableCalculation = False

    For i = 1 To 100

        '再計算
        ActiveSheet.EnableCalculation = True
        ActiveSheet.EnableCalculation = False
            
        '結果(B7-D7)の値を13-15列目の2行以下にコピー
        Range(Cells(i + 1, 13), Cells(i + 1, 15)).Value = Range("B7:D7").Value
          
    Next i
    
    '自動再計算を元に戻す
    ActiveSheet.EnableCalculation = True
 
 End Sub

・実行:ツール→マクロ→実行

・編集:ツール→マクロ→編集

応用:セルD4の値を0-4.9まで0.1刻みに変化させた場合は、

   

For i = 1 To 50
    
        'パラメータの値(D4)を0-4.9まで0.1刻みで変化させる
        Cells(4, 4).Value = (i - 1) / 10
 
        '再計算
        Activesheet.EnableCalculation=True
        Activesheet.EnableCalculation=False
 
        '結果(F4)の値を11列目にコピー&ペースト
        Cells(i + 1, 11).Value = Cells(4, 6).Value
       
   Next i

参考サイト:http://kaiseki.ori.u-tokyo.ac.jp/~katukawa/hiki/?Excel+%26+VBA+tips
       貴重な情報、有り難うございました。

【090828追記】

応用:セルB5の値を-0.5-0.5の範囲で0.1刻みに変化させ、各条件下で乱数シミュレーションする場合
   
Sub シミュレーション()

    ActiveSheet.EnableCalculation = False

   For i = 1 To 11
   
      'パラメータの値(B5)を-0.5から0.5まで、0.1刻みで変化させる
      Cells(5,2).Value = (i-6)/10

      For j = 1 To 100

        '再計算
        ActiveSheet.EnableCalculation = True
        ActiveSheet.EnableCalculation = False
            
        '結果(B7)の値を13+(j-1)列目の2行以下にコピー
        Cells(i+1,13+(j-1)).Value = Cells(7,2).Value
         
      Next j

   Next i
   
   ActiveSheet.EnableCalculation = True

End Sub

| | コメント (0) | トラックバック (0)

[Notes] データベースの移動方法

Lotus Notesにおいて、メールのDB(*.nsfファイル)を移動する方法です。

1)移動したいメールDBのアイコン右クリック
2)レプリカ複製→レプリカ作成
3)ファイルパスで、異動先を指定
4)レプリカ作成の実行
5)レプリカのアイコンが新しくできる
6)旧アイコンの右クリックからデータベース削除

| | コメント (0) | トラックバック (0)

[ppt] PowerPointのスライドにWordの表を貼り付けたい

1) Wordで表を選択して[コピー]

2) PowerPointで[編集]→[形式を選択して貼り付け]から、Wordオブジェクトとして貼り付ける

注:罫線が細すぎてpptで表示できない場合は、Wordで線を太くする。

-----------------------------------------------
【11/3/6追記】 Word2000からppt2002の場合、

(a) 以上の方法は、オブジェクトとして貼り付けることになり、クリックすると、Wordが起動する。
(b) しかし、表の左の罫線が消えてしまう(表示されない)トラブル発生。
(c) 通常の[コピー]&[貼り付け]でも、貼り付け可能。トラブル発生せず。
  ただし、文字の色の変更が必要。
(d) 貼り付け形式は、グループ化されたテキストボックスの模様。

| | コメント (0) | トラックバック (0)

[携帯電話] パソコンからのメールが受信できない問題

現象:(特に、auの携帯で)携帯からのメールは受信できるが、パソコンからのメールが受信できない。

原因:迷惑メール対策の設定が問題。特に、au携帯では、インターネットからのメールを一括拒否設定できる機能になっている。

対策:待受画面の状態で「メールキー」を押下→「Eメール設定」→「その他の設定」→「メールフィルター」→「暗証番号」を入力→「個別設定」→「基本設定」→ 「一括指定受信」→「インターネット」のチェックを入れる。

注意:チェックが外れている場合には、パソコンから送信されるメールがすべて拒否される。

参考:各携帯で、迷惑メール対策の設定機能が異なり、auのみインターネット一括拒否があるので、要注意。

参考サイト:
http://www.dekyo.or.jp/soudan/index.html
迷惑メール相談センター|(財)日本データ通信協会
ここに、各携帯(au、docomo、Softbank)の設定機能一覧表がある。

http://cs119.kddi.com/faq/1032/app/servlet/qadoc?QID=000118
パソコンやドコモ等、特定の相手からのEメールがauケータイで受信できない。


(09/8/19追記)

フィルターレベルを3段階の中から選べるようになっている場合、フィルターレベル (高)にすると、PCからのメールを拒否する。送信者側には何のレスもなく、メールが届いていないことに気付かない。

| | コメント (2) | トラックバック (0)

[html] 自動的に切り替わる表紙ページの作成法

以下のソースで、3秒後に自動的に、指定URL(***.html)に飛ぶ

<html>

<head>
<meta http-equiv="refresh" content="3;http://***.html">
</head>

<body>
</body>
</html>

[重要:09/08/20追記]

上の方法では、うまく行かないブラウザ(IE)があることが判明。
以下の<meta>タグが正しい。

<meta http-equiv="refresh" content="3;URL=http://***.html">

| | コメント (0) | トラックバック (1)

[Excel] 1次元、2次元データを任意間隔で間引く方法

特徴:特殊なツールを使用せず、汎用的で、2次元データにも使用可能

ポイント:offset関数を利用

1次元データの場合:

・データがA列に入っているとする
・B列に間引く間隔データを入れる(例:0,4,8,12,...)
・C1=OFFSET($A$1,B1,0) を入れて、C列にコピーする

2次元データの場合:

・データがDataシートのA1以下に入っているとする
・第2シートA列($A2~)と1行(B$1~)に間引く間隔データを入れる(例:0,4,8,12,...)
・B2=OFFSET(Data!$A$1,$A2,B$1) を入れて、全体にコピーする

参考:offset関数
   =OFFSET(基準セル,オフセット行数,オフセット列数)

---------------------

[追記](2016/8/12)

1次元データの場合、最も単純な方法は、「データの並び替え」を利用する方法で、下記の手順。

1)作業列を作成

2)MOD関数を使用して、セルに1~m の整数を繰り返し入れる

3)作業列を含み、データ範囲を選択

4)[データ]→[並び替え]

5)[最優先されるキー]:作業列

6)[並べ替えのキー]:値

7)「順序」:昇順

8)作業列が1の行が上に集められる

| | コメント (0) | トラックバック (0)

[Excel] 正規乱数発生方法

正規分布する乱数を発生させる方法です。

■概要

数値データの場合、以下の方法がある。

1)一様乱数RAND()から変換する

  a) NORMSINV関数と組み合わせ:初心者向き
  b) Box-Muller法:初心者向き
  c) 中心極限定理の方法:VBA使用で、上級者向

2)分析ツール使用:中級者向き

お薦め:=NORMSINV(RAND())関数使用

・平均が0、標準偏差が1の正規分布に従う乱数を発生させる場合

 =NORMSINV(RAND())

・平均値がμ、標準偏差がσの正規分布に従う乱数を発生させる場合

 =μ+σ*NORMSINV(RAND())

【参考】

・RAND()関数
  ・0~1の一様乱数を発生

・NORMSINV()関数
  ・標準正規累積分布関数の逆関数を返す
  ・書式:NORMSINV(確率)

・NORMINV(RAND(),0,1)関数
  ・正規累積分布関数の逆関数を返す
  ・書式:NORMINV(確率,平均,標準偏差)

・平均値がμ、標準偏差がσの正規分布

  f(x) =1/(√(2π)σ)exp{-(x-μ)^2/(2σ^2)}

| | コメント (0) | トラックバック (0)

[Excel] ヒストグラム作成法

■概要

数値データの場合、以下の方法がある。

1)分析ツール使用:簡単だが、データ再利用には向かない

2)COUNTIF関数使用:初心者向き、かつ、汎用的

3)FREQUENCY関数使用:上級者向き(配列関数のため)

4)ピボットテーブル使用:上級者向き

5)VBA使用:上級者向き

お薦め:COUNTIF関数使用

・COUNTIF関数の引数
 =COUNTIF(データ範囲,条件)

・数値が区間10~20の個数
 =COUNTIF(データ範囲,">=10")-COUNTIF(データ範囲,">20")

・階級境界値[10,20]がセルA1,A2にある場合(セル参照)
 =COUNTIF(データ範囲,">="&A1)-COUNTIF(データ範囲,">"&A2)

【参考】
・条件をセル参照にすることもできる
 =COUNTIF(データ範囲,C1)-COUNTIF(データ範囲,C2)
   C1セル:>=10
  C2セル:>20

・データ範囲の書式例は、A1:A100

| | コメント (0) | トラックバック (0)

« 2009年7月 | トップページ | 2009年9月 »