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も見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
色度図から発光波長を計算する
物理学
-
L*a*b*表色系の「*」の意味
その他(自然科学)
-
反射スペクトルからL*a*b*を求める方法を教えてください
化学
-
-
4
波長からRGB変換
物理学
-
5
Excel VBA での計算について…
Visual Basic(VBA)
-
6
ドミナント波長って何?
その他(自然科学)
-
7
黒体放射軌跡のxy色度座標へのプロット
その他(教育・科学・学問)
-
8
輝度対比(コントラスト)の計算公式
物理学
-
9
光子数の求め方
化学
-
10
CIE xy色度図における等色温度線の書き方
その他(自然科学)
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クフ王のピラミッド内部構造は...
-
等吸収点って・・・
-
月光に紫外線は?
-
検量線に吸収極大波長を用いる...
-
PETボトルは紫外線を通しますか?
-
アルミホイルはエックス線を通すか
-
250nmのUV-Cを直視してしまった...
-
超低周波発生装置を作るにはど...
-
バルマー系列の最短波長と最長波長
-
磁性鍋・・・マイクロ波が赤外...
-
何故、白より黒の方が紫外線の...
-
光はなぜガラスを通過するので...
-
電子レンジの遮蔽網の穴の大きさ
-
TLCスポットのUV発色について
-
電磁波の周波数と熱について教...
-
30℃の空気中の音速は何m/sか。...
-
太陽光と同じか、それに近い光...
-
Si-C結合を切るのに必要な光の...
-
ブラックライトで油脂分が見える?
-
DNAの波長について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
磁性鍋・・・マイクロ波が赤外...
-
弦の振動の問題で おもりを変え...
-
月光に紫外線は?
-
アルミホイルはエックス線を通すか
-
超低周波発生装置を作るにはど...
-
PETボトルは紫外線を通しますか?
-
250nmのUV-Cを直視してしまった...
-
軽元素の定量について、EDSやXR...
-
赤色光と青色光の読み方は、何...
-
電子レンジの遮蔽網の穴の大きさ
-
艶 と 光沢 は違いがありますか。
-
電球などの強い光を見続けるの...
-
色度(x,y)をスペクトルデータか...
-
ブラックライトで油脂分が見える?
-
光はなぜガラスを通過するので...
-
携帯などの電波が壁や窓を突き...
-
シリコンの透過率についてです...
-
ソーラーパネルは赤外線と紫外...
-
太陽光と同じか、それに近い光...
-
スペクトルの面積計算
おすすめ情報