
No.6ベストアンサー
- 回答日時:
#2の者です。
一応自動にしてみました。エクセルで各セルに
A B C ・・・最後のセル
1 5 6 7・・・end
2 2 9 2・・・
最後のセルの上段にendといれてください。
Sub 中央値()
ReDim x(100) As Variant
Dim n As Long, l As Long, P As Long, Z As Long, datm As Long
'
l = 1
P = 1
Do Until Cells(1, l) = "end"
For n = 1 To Cells(2, l)
x(P) = Cells(1, l)
P = P + 1
Next n
l = l + 1
Loop
Z = P - 1
P = 1
For P = 1 To Z
For r = P + 1 To Z
If x(P) > x(r) Then
datm = x(P)
x(P) = x(r)
x(r) = datm
End If
Next
Next
If (Z) Mod 2 = 0 Then
Cells(3, 1) = "中央値は"
Cells(4, 1) = (x(Z / 2) + x(Z / 2 + 1)) / 2
Cells(5, 1) = "です。"
Else
Cells(3, 1) = "中央値は"
Cells(4, 1) = x(Z / 2)
Cells(5, 1) = "です。"
End If
End Sub
No.7
- 回答日時:
あっそうですね。
#5 の私のは、まだ間違えていますね。もとの中央値自体を知らないもので(^^;End If '以下 差し替えです。
If UBound(myData) Mod 2 = 0 Then
multiMedian = (myData(k / 2) + myData(Int((k / 2) + 0.5))) / 2
Else
multiMedian = myData(Int((k / 2) + 0.5))
End If
'multiMedian = Application.Median(myData)
↑ '一応これは残しておきます。If 以下全てがこれに置き換え可能です。
End Function
これで大丈夫かな?
No.5
- 回答日時:
重ねての掲示ご迷惑かもしれませんが、#4の手直ししました。
列・行ともに対応します。最後の「'」の部分の行と出力行を入れ替えれば、並び替えが出来ますので、昇順でなくても可能になります。'<標準モジュール>
'-------------------------------------------
Function multiMedian(ByVal 範囲 As Range) As Double
'1次側-基数, 2次側-回数,基数は、標準で昇順に並んでいること
'1次側に文字列を入れるとはじく。
'2次側に、0を入れてもカウントはしない。
Dim Rng As Range
Dim myData()
Dim i As Long, k As Long, j As Long
Dim h As Integer, v As Long
ReDim myData(1 To 1)
k = 1
Set Rng = 範囲
h = Rng.Columns.Count
v = Rng.Rows.Count
If v = 2 Then '縦に2行
For i = 1 To h
For j = 1 To Rng.Cells(2, i).Value
If VarType(Rng.Cells(2, i)) = vbDouble Then
ReDim Preserve myData(1 To k)
myData(k) = Rng.Cells(1, i).Value
k = k + 1
End If
Next j
Next i
ElseIf h = 2 Then '横に2列
For i = 1 To v
For j = 1 To Rng.Cells(i, 2).Value
If VarType(Rng.Cells(i, 2)) = vbDouble Then
ReDim Preserve myData(1 To k)
myData(k) = Rng.Cells(i, 1).Value
k = k + 1
End If
Next j
Next i
End If
multiMedian = myData(Int((k / 2) + 0.5))
'multiMedian = Application.Median(myData) 'こちら側は並び替えあり
End Function
No.4
- 回答日時:
#2 のkoganetonさんのアイデアをいただきました。
m(__)mユーザー定義関数です。今回は、本格的なものではないので、時間は、昇順に並んでいることが条件です。そうでない場合は、特別なロジックが必要になります。
マクロ-Visual Basic Editor
挿入-標準モジュールで以下を貼り付けます。
'<標準モジュール>
'-------------------------------------------
Function multiMedian(範囲 As Range) As Double
'現在は計算は横のみ'下の行がその数
Dim Rng As Range
Dim myData()
Dim i As Long, k As Long, j As Long
ReDim myData(1 To 1)
k = 1
Set Rng = 範囲
h = Rng.Columns.Count
v = Rng.Rows.Count
For i = 1 To h
For j = 1 To Rng.Cells(2, i)
ReDim Preserve myData(1 To k)
myData(k) = Rng.Cells(1, i).Value
k = k + 1
Next j
Next i
multiMedian = myData(Int((k / 2) + 0.5))
End Function
'-------------------------------------------
使い方は、一般の関数と同じように、
=MULTIMEDIAN(B1:G2)
とすれば出てきます。
No.3
- 回答日時:
中央値メジアンはデータ個数の中央の値です。
データ数が偶数の場合は、中央に当たる2個のデータの平均値を取ります。
ということから、次のようなやり方で出せると思います。
まず、データが
A B C D E F G
1 時間 5 6 7 8 9 10
2 人数 2 9 2 3 0 1
となっているとします。
順番を決めるための補助として3行目を使います。
B3セルに
=SUM(B2:G2)
と入力します。
B4セルには
=B3-B2
として、これをG3セルまでコピーします。
あとは中央値を求めたいセルに、
=(INDEX(B1:G1,MATCH(INT(B3/2),B3:G3,-1))+INDEX(B1:G1,MATCH(INT(B3/2)+1,B3:G3,-1)))/2
と入力すれば、計算できると思いますが。
INT(B3/2)で個数の半分を求め、それがB3:G3のうちのどの列に当たるかをMatch関数で得ています。
さらに次のINDEX関数では、INT(B3/2)+1で次の順番の数字の列を求めています。
この2つを足して、2で割れば、メジアンになります。
No.1
- 回答日時:
こんにちは。
maruru01です。睡眠時間がB1:G1、人数がB2:G2にあるとします。
全員の睡眠時間の合計が、
=SUMPRODUCT(B1:G1,B2:G2)
で、人数の合計が、
=SUM(B2:G2)
で計算されますから、1人あたりの睡眠時間の平均は、
=SUMPRODUCT(B1:G1,B2:G2)/SUM(B2:G2)
になります。
(質問欄の例だと、「6.588・・・」)
このようなことでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- iPhone(アイフォーン) Apple Watchを使って睡眠計測をしています。 他に睡眠アプリも並行して使ってみていますが計測 2 2023/05/28 13:09
- 睡眠障害・不眠症・過眠症 睡眠時間・睡眠の状態について 2 2023/03/18 20:16
- 日本語 順位と平均の意味に関する疑問 5 2023/04/15 13:25
- 歩数計・活動量計 スマートウォッチについて。 不眠症なのでスマートウォッチを買って睡眠の質など見てみたいなと思ったので 4 2023/05/02 01:43
- Excel(エクセル) いつもお世話になっております。 円の直径290、半径145 ですが、 添付のエクセルように 座標に中 2 2023/03/14 03:34
- 睡眠障害・不眠症・過眠症 睡眠の質を高めるにはどうしたらいいですか?長くなりましたが、今の私の睡眠の現状です。どうか最後まで読 2 2023/07/19 19:29
- 病院・検査 睡眠時間が10時間未満の時、日中恐ろしい眠気に襲われます。 ギリ寝ないようにできますが、10時間以上 12 2022/10/12 10:55
- Excel(エクセル) Excel カラースケール 対数で色分したい 3 2022/11/25 13:09
- 睡眠障害・不眠症・過眠症 この症状は不眠症でしょうか。 30代男です。もう20代から満足な睡眠が出来ずに悩んでいます。私の特徴 1 2022/04/01 08:56
- 睡眠障害・不眠症・過眠症 睡眠時間について詳しい人にお聞きしたいです。定期的に夜勤もするので、普段の睡眠時間は健康に気を付けた 2 2023/05/09 07:26
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日付データの統合を行いたいの...
-
エクセルでこのようなことはで...
-
同一セルに日時があるものを日...
-
Excel2003の警告の内容について...
-
OFFSET関数を使用した印刷範囲...
-
For Next ステートメントで計算...
-
【VBA】指定フォルダに格納中の...
-
補足お願いします、エクセル計算式
-
コピー&ペースト
-
セル内の改行された文字列を分割
-
EXCELでCSVファイル保存すると...
-
Excel 土日のみ抽出
-
Googleスプレッドシート横並び...
-
エクセルの自動計算について教...
-
1年分のデータから特定の月分...
-
エクセルでの一回での文字の挿入
-
エクセルで数列を使う方法はあ...
-
Excelなのですが A1~A3・・...
-
エクセルの関数について教えて...
-
セルの着色を認識する関数って...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同一セルに日時があるものを日...
-
EXCELでCSVファイル保存すると...
-
1年分のデータから特定の月分...
-
Excelで指定した条件と一致する...
-
COUNTIFの反対の関数はあるので...
-
エクセルVBAで、複数セルのデー...
-
エクセルでセルを一括で右詰に...
-
OFFSET関数を使用した印刷範囲...
-
ドロップダウンリストで空白の...
-
1つのセルにまとまっている情報...
-
EXCELで年月日の表記から日付部...
-
色なしセルの合計値の出し方に...
-
エクセルで数字、文字列混在の...
-
エクセルVBA オートフィルの最...
-
エクセル
-
Excelで連続データを行飛ばしで...
-
Excelのシートごとの日付の追加
-
エクセルで特定の行を除いて計...
-
【VBA】指定フォルダに格納中の...
-
Excel 空白セルの掛け算で答え...
おすすめ情報