No.3ベストアンサー
- 回答日時:
もしマクロの作り方が分からなければ以下の手順を参考にしてください。
【マクロの作成方法】
(1) Excelワークシートを新規に作成し、ALTキーを押しながら F8 キーを押す
(2) マクロ名の欄に適当なマクロ名(xy など)を書いて「作成」をクリック
(3) Visual Basicの編集画面の Sub マクロ名() と End Sub の間にコードを貼り付ける(回答No.2ののプログラムの Sub xy() と End Sub の間の文章を コピー&ペースト すれば良い)
(4) 編集画面を閉じる(ALT+Q)
【マクロの実行方法】
実行する前にワークシートのセルに必要なデータが書き込まれていないとエラーになります
(1) Excelワークシートに戻り、ALTキーを押しながら F8 キーを押す
(2) 作成したマクロ名を選んで「実行」をクリック
【マクロの内容の変更方法】
(1) ALTキーを押しながら F8 キーを押す
(2) 作成したマクロ名を選んで「編集」をクリック
(3) 内容を変更する(編集画面のままでF5キーを押すと変更されたマクロが実行されます)
【セキュリティレベルの変更】
マクロを含むExcelファイルを開くとき、セキュリティレベルによってはマクロが実行できない場合があります。その場合、以下の手順でセキュリティレベルを変更してください。
(Excel 2003の場合)
新規にワークシートを作成して、ツールバーの「ツール」→「オプション」→「セキュリティー」タブ→「マクロセキュリティー」→セキュリティーレベルの「中」または「低」の選択→OK→OK→Excel終了→マクロを含むExcelファイルを開く
(Excel 2007の場合)
新規にワークシートを作成して、左上隅の丸(Officeボタン)をクリック→下端の「Excelのオプション」を選択→左側の「セキュリティーセンター」を選択→右下の「セキュリティーセンターの設定」をクリック→左側の「マクロの設定」をクリック→「すべてのマクロを有効にする」を選択→OK→OK→Excelの終了(保存しない)→マクロを含むExcelファイルを開く
No.2
- 回答日時:
VBAコードを添付します。
Sub xy()
Dim xI As Integer, xJ As Integer, yI As Integer, yJ As Integer
Dim I1 As Integer, I2 As Integer, I3 As Integer, I4 As Integer
Dim J1 As Integer, J2 As Integer, J3 As Integer, J4 As Integer, J5 As Integer, J6 As Integer
'
xI = 4 ' xの値を書き込むセルの行番号
xJ = 10 ' xの列番号
yI = 5 ' yの値を書き込むセルの行番号
yJ = 10 ' yのの列番号
'
I1 = 8 ' 等色関数データの開始行番号
I2 = 478 ' 最終行番号
J1 = 1 ' 等色関数の波長データの列番号
J2 = 2 ' 等色関数のx_データの列番号
J3 = 3 ' 等色関数のy_データの列番号
J4 = 4 ' 等色関数のz_データの列番号
'
I3 = 8 ' スペクトルデータの開始行番号
I4 = 608 ' 最終行番号
J5 = 6 ' スペクトルの波長データの列番号
J6 = 7 ' スペクトルの強度データの列番号
'
Dim w1() As Single, x1() As Single, y1() As Single, z1() As Single ' 等色関数の 波長(w1)、関数値(x1,y1,z1)
Dim w2() As Single, p() As Single, x2() As Single, y2() As Single, z2() As Single ' スペクトルの波長(w2)、強度(p)、波長に対応する等色関数値(x2,y2,z2)
Dim N1 As Integer, N2 As Integer ' N1:等色関数のデータ数、N2:スペクトルのデータ数
N1 = I2 - I1 + 1: N2 = I4 - I3 + 1
ReDim w1(N1), x1(N1), y1(N1), z1(N1)
ReDim w2(N2), p(N2), x2(N2), y2(N2), z2(N2)
Dim i As Integer, j As Integer, k As Integer, j0 As Integer, a As Single
' ---- データ読み込み
For i = 1 To N1
k = I1 + i - 1
w1(i) = Cells(k, J1): x1(i) = Cells(k, J2): y1(i) = Cells(k, J3): z1(i) = Cells(k, J4)
Next i
For i = 1 To N2
k = I3 + i - 1
w2(i) = Cells(k, J5): p(i) = Cells(k, J6)
Next i
' ---- 等色関数の補間
For i = 1 To N2
For j = 1 To N1
If w2(i) < w1(j) Then
j0 = j - 1
Exit For
End If
Next j
a = (w2(i) - w1(j0)) / (w1(j0 + 1) - w1(j0))
x2(i) = a * (x1(j0 + 1) - x1(j0)) + x1(j0)
y2(i) = a * (y1(j0 + 1) - y1(j0)) + y1(j0)
z2(i) = a * (z1(j0 + 1) - z1(j0)) + z1(j0)
Next i
' ---- 三刺激値の計算(台形公式による数値積分)
Dim sx As Single, sy As Single, sz As Single, x As Single, y As Single
sx = 0: sy = 0: sz = 0
For i = 1 To N2 - 1
a = (w2(i + 1) - w2(i)) / 2
sx = sx + (p(i) * x2(i) + p(i + 1) * x2(i + 1)) * a
sy = sy + (p(i) * y2(i) + p(i + 1) * y2(i + 1)) * a
sz = sz + (p(i) * z2(i) + p(i + 1) * z2(i + 1)) * a
Next i
x = sx / (sx + sy + sz)
y = sy / (sx + sy + sz)
Cells(xI, xJ) = x
Cells(yI, yJ) = y
End Sub
No.1
- 回答日時:
以前、Excel VBA を使って任意のスペクトルの色度座標を計算するツールを作ったことがあるのでコードを紹介します(字数制限でこの回答に添付できないので次の解答に添付します)。
ワークシートの F 列にスペクトルの波長データ、G 列にスペクトルの強度データを貼り付けて、マクロ xy を実行すると、4行 J 列目に x 座標、5 行 J 列目に y 座標の値が書き込まれます。データの読書きのセル位置はプログラムの4行目以降に書かれていますので適宜変えてください。添付図は、発光スペクトルをローレンツ関数とした場合の例です。このVBAプログラムは自分用なのでエラー処理等は行っていません。スペクトルの波長範囲は、等色関数データの波長範囲の内側としてください。スペクトルの波長が中途半端な値でも、波長間隔が一定でなくても計算できます(等色関数を直線補間している)。
等色関数データは、ここ(http://www.cvrl.org/)の左側の「CMFs」をクリックして出てきたページの「E/W」をクリックするとダウンロードできます。一番上にある 「CIE 1931 2-deg, XYZ CMFs」 が2度視野、「CIE 1964 10-deg, XYZ CMFs 」が10度視野です。「E/W」の / が破線のほうは波長 5nm 刻み、/ が実線のほうが 1nm 刻みのデータです。ダウンロードしたデータの1列目は波長、2列目が等色関数の x_、3列目が y_、4列目が z_ になっています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(IT・Webサービス) 高速処理可能な表計算ソフトについて ExcelやGoogleスプレッドシートのような表計算ソフトで、 2 2023/04/29 16:06
- その他(自然科学) 原子の線スペクトルについて 1 2022/05/07 09:10
- 統計学 2019年度の毎日朝6時に測定された東京都霞が関における窒素酸化物(Nox)濃度のモニタリングデータ 4 2023/04/24 16:45
- Excel(エクセル) Excelの計算式で質問です。 3 2022/06/21 21:58
- その他(プログラミング・Web制作) プログラミング 処理速度 1 2022/11/25 11:05
- 数学 賃料と専有面積のデータが60部屋分ほどがあり、 賃料÷専有面積(=1㎡あたりの賃料)の数式で計算する 2 2023/02/18 20:33
- 統計学 t値の計算方法 1 2022/11/29 18:37
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- 工学 セシウムの線スペクトルについて 1 2022/05/04 09:23
- Excel(エクセル) EXCELピボットテーブル関数について 2 2023/04/10 20:35
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
色度図から発光波長を計算する
物理学
-
L*a*b*表色系の「*」の意味
その他(自然科学)
-
反射スペクトルからL*a*b*を求める方法を教えてください
化学
-
-
4
波長からRGB変換
物理学
-
5
Excel VBA での計算について…
Visual Basic(VBA)
-
6
ドミナント波長って何?
その他(自然科学)
-
7
光子数の求め方
化学
-
8
輝度対比(コントラスト)の計算公式
物理学
-
9
黒体放射軌跡のxy色度座標へのプロット
その他(教育・科学・学問)
-
10
CIE xy色度図における等色温度線の書き方
その他(自然科学)
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クフ王のピラミッド内部構造は...
-
検量線に吸収極大波長を用いる...
-
吸収スペクトルと蛍光励起スペ...
-
月光に紫外線は?
-
蛍光スペクトル測定で倍波を検...
-
磁性鍋・・・マイクロ波が赤外...
-
吸光度?蛍光強度?励起強度?
-
赤外線と金属の関係
-
軽元素の定量について、EDSやXR...
-
250nmのUV-Cを直視してしまった...
-
ブラックライトで油脂分が見える?
-
TLCスポットのUV発色について
-
等吸収点って・・・
-
色度(x,y)をスペクトルデータか...
-
スペクトルとは何ですか?簡単...
-
リュードベリ定数の
-
フーリエ変換など。スペクトル...
-
PETボトルは紫外線を通しますか?
-
1/2波長板ってどういうものです...
-
化学(波長について)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
磁性鍋・・・マイクロ波が赤外...
-
弦の振動の問題で おもりを変え...
-
月光に紫外線は?
-
アルミホイルはエックス線を通すか
-
超低周波発生装置を作るにはど...
-
PETボトルは紫外線を通しますか?
-
250nmのUV-Cを直視してしまった...
-
軽元素の定量について、EDSやXR...
-
赤色光と青色光の読み方は、何...
-
電子レンジの遮蔽網の穴の大きさ
-
艶 と 光沢 は違いがありますか。
-
電球などの強い光を見続けるの...
-
色度(x,y)をスペクトルデータか...
-
ブラックライトで油脂分が見える?
-
光はなぜガラスを通過するので...
-
携帯などの電波が壁や窓を突き...
-
シリコンの透過率についてです...
-
ソーラーパネルは赤外線と紫外...
-
太陽光と同じか、それに近い光...
-
スペクトルの面積計算
おすすめ情報