- Excel VBA 質問スレ Part38 [転載禁止]©2ch.net
95 :デフォルトの名無しさん[sage]:2015/09/19(土) 03:20:58.94 ID:ZcnBR6n/ - 元データが3つだと工夫の余地なくない?
手抜きだから同差だと答えが出ない 元データA1〜A3 → 狭い方の平均x s1 = Abs(A1 - A2) s2 = Abs(A1 - A3) s3 = Abs(A2 - A3) If s1 < s2 And s1 < s3 Then x = (A1 + A2) / 2 If s2 < s1 And s2 < s3 Then x = (A1 + A3) / 2 If s3 < s1 And s3 < s2 Then x = (A2 + A3) / 2
|
- Excel VBA 質問スレ Part37 [転載禁止]©2ch.net
248 :デフォルトの名無しさん[sage]:2015/09/19(土) 07:03:55.20 ID:ZcnBR6n/ - >>247
セルにシリアル値が入ってるとして 差 = Range("B1").Value - Range("A1").Value
|
- Excel VBA 質問スレ Part38 [転載禁止]©2ch.net
103 :デフォルトの名無しさん[sage]:2015/09/19(土) 13:14:42.74 ID:ZcnBR6n/ - >>96
元データを配列にして、結果を求める部分はFunctionに分ける、ぐらいしか今できる対策はないかな あとはソート、差分、平均の3段階に分けて処理するだけ
|
- Excel VBA 質問スレ Part38 [転載禁止]©2ch.net
107 :デフォルトの名無しさん[sage]:2015/09/19(土) 21:31:02.48 ID:ZcnBR6n/ - 同差に対応したいなら < を <= にすればいいだけと違う?
この程度の分岐なら If をなくして論理式だけで計算する方法もある。保守性は悪くなるけど s1 = Abs(A2 - A3) s2 = Abs(A1 - A3) s3 = Abs(A1 - A2) x = ((-(s1 <= s2 And s1 <= s3) * (A2 + A3)) + (-(s2 <= s1 And s2 <= s3) * (A1 + A3)) + (-(s3 <= s1 And s3 <= s2) * (A1 + A2))) / 2
|