EXCELに関して表題の件でお知恵を借りたいです。よろしくお願いします。
今、以下のようなサンプルがあるとします。
分類1 分類2 1回目 2回目 3回目 4回目
-------------------------------------------------
A A-1 12 14 34 45
A A-1 65 23 76 23
A A-2 23 89 43 90
B B-4 89 34 12 33
B B-2 78 44 54 22
C C-2 45 55 76 12
ここで、
分類 代表値
A 76
B 33
C 76
というキーをもとに分類2の情報とその代表値が"何回目"のときの値であったのかを知りたいです。
すなわち、
分類 代表値 何回目? 分類2?
A 76 3 A-1
B 33 4 B-4
C 76 3 C-2
を最終的に抽出したいです。
これを実現するために書くべき関数式はどのようなものが適切でしょうか?手作業でひとつひとつやるのは少々無理なデータ量です。
よろしくお願いします。
No.5ベストアンサー
- 回答日時:
#4 の補足。
A B C D
分類 代表値 何回目? 分類2?
A 23
ちょうど、このような例の場合は、数値のダブりがありますから、その場合は、CountIf で取って、複数ある場合は、
=SMALL(ABS((INDIRECT("R"&MATCH(A21,$A$1:$A$7,0)&":R"&MATCH(A21,$A$1:$A$7,1)&"C3:C6",0))-B21)+COLUMN(A1:D1)*10^-3,2)
=SMALL(ABS((INDIRECT("R"&MATCH(A21,$A$1:$A$7,0)&":R"&MATCH(A21,$A$1:$A$7,1)&"C3:C6",0))-B21)+COLUMN(A1:D1)*10^-3+ROW(INDIRECT("R"&MATCH(A21,$A$1:$A$7,0)&":R"&MATCH(A21,$A$1:$A$7,1)&"C1",0))*10^-6,2)
これらの式の第二引数、つまり、末尾の、,1) の部分の数,2) とすれば、二番目が出てくるわけです。
No.6
- 回答日時:
A B C D E F G H I J K
1 類1 類2 1回 2回 3回 4回 類1 代表 回目 類2
2 A A-1 12 14 34 45 A 76 3 A-1
3 A A-1 65 23 76 23 B 33 4 B-4
4 A A-2 23 89 43 90 C 76 3 C-2
5 B B-4 89 34 12 33
6 B B-2 78 44 54 22
7 C C-2 45 55 76 12
J2: =MATCH(I2,OFFSET($A$1,SUMPRODUCT((A$1:A$10=H2)*((C$1:C$10=I2)+(D$1:D$10=I2)+(E$1:E$10=I2)+(F$1:F$10=I2)),ROW(A$1:A$10))-1,2,1,4),0)
K2: =INDEX(B$1:B$10,SUMPRODUCT((A$1:A$10=H2)*((C$1:C$10=I2)+(D$1:D$10=I2)+(E$1:E$10=I2)+(F$1:F$10=I2)),ROW(A$1:A$10)),1)
No.4
- 回答日時:
こんにちは。
VBAでなくても出来そうな気がします。
今、集中できないことがあって、作った本人が、Match関数とIndex 関数の組み合わせが、ややこしくなって、その説明がうまくできません。理屈は、代表値(検索値)と該当する値の差を取った絶対値の最小値を取り出す、という考え方です。
横に伸びていくということで、
とりあえず、
A20から取り付けることにしました。
A B C D
分類 代表値 何回目? 分類2?
21 A 23
22 B 44
23 C 76
F21
=SMALL(ABS((INDIRECT("R"&MATCH(A21,$A$1:$A$7,0)&":R"&MATCH(A21,$A$1:$A$7,1)&"C3:C6",0))-B21)+COLUMN(A1:D1)*10^-3,1)
配列確定が必要です。F2 -> Ctrl + Shift + Enter
G21
=SMALL(ABS((INDIRECT("R"&MATCH(A21,$A$1:$A$7,0)&":R"&MATCH(A21,$A$1:$A$7,1)&"C3:C6",0))-B21)+COLUMN(A1:D1)*10^-3+ROW(INDIRECT("R"&MATCH(A21,$A$1:$A$7,0)&":R"&MATCH(A21,$A$1:$A$7,1)&"C1",0))*10^-6,1)
配列確定が必要です。F2 -> Ctrl + Shift + Enter
C21 ~フィルダウン・コピー
=MOD(F21,1)*10^3
D21 ~フィルダウン・コピー
=INDEX($B$1:$B$7,MOD(G21*10^3,1)*10^3,1)
これは、俗に、重み付けテクニックと呼ばれるものです。
No.3
- 回答日時:
こんにちは~♪
失礼しま~す。。。
回答ではないのですが~。
>#01さんのおっしゃるように検索する値が一次元(1列
>もしくは1行)で格納されていれば
作業列を使って、1列に抜き出せば
出来そうですが。
その場合でもいくつか、疑問があります。
疑問その1
sakuuuuuさんも書かれていますが
Aの場合、23 が、3つあって、同じ行にも2つあります。
この場合、何を条件にして回数や分類2を判断すれば
良いのでしょうか?
疑問その2
>最も近い値を持つセル
Aで、代表値が 13 の場合 12 又は 14
どちらになるのでしょう?
検査より上の近似値か、下の近似値どちらでしょう?
★これらの説明があれば、良いのですが。
又、条件が合うデータは(例えば、回数が複数該当する
場合はすべて、表示させる事も出来ると思いますけれど。
。。。。Rinでした~♪♪
No.2
- 回答日時:
質問の例でデータがA2:F7にあり(A1:F1はタイトル)、A10に求める値の「A」、B10に「76」があるとき
完全に一致する数値が1つだけあるという条件が成り立つなら
該当する「n回目」は(質問例では「3回目」)
=OFFSET(A1,0,SUMPRODUCT((A2:A7=A10)*(C2:F7=B10)*COLUMN(C2:F7))-1)
そのときの分類(A-1)は
=INDIRECT("B"&SUMPRODUCT((A2:A7=A10)*(C2:F7=B10)*ROW(C2:F7)))
の関数式で求めることができます。
でも実際にはデータの重複もありそうですし、また近似値で検索されたいようですね。となるとEXCELの関数では難しいと思います。LOOKUP関数で配列範囲内の検索は可能ですが複合条件での検索には不向きです。
#01さんのおっしゃるように検索する値が一次元(1列もしくは1行)で格納されていればVLOOKUP関数やMATCH関数で完全一致でない検索も可能です。
ただしその場合であっても「最も近い数値」を検索することはできません。「指定した値以下の最も近い数値」または「指定した値以上の最も近い数値」だけです。
No.1
- 回答日時:
いまいち良く分からないのですが・・・。
例えばA-1の2回目、というデータはサンプルデータでは"14""23"があるのですが・・。"23"は6回目と言う位置づけなんですか??
あと表題では「最も近い値を持つセル」と書いてありますが値はぴったりじゃない場合もあるのですか??
ぱっと見、関数では無理かなあ・・という気がします。
たとえできたとしても複雑な関数になるでしょう。
1回目、2回目、3回目と横にデータを持ってますが縦持ちにできないのでしょうか?
A A-1 12 1回目
A A-1 14 2回目
A A-1 34 3回目
最初にこのような表にすれば作業は劇的に効率的になります。
いつもこのOKWAVEを見て思うのですがEXCELをあまり使用したことがない人は(すなわちEXCELビギナーは)、表の見易さを優先して横に長い表を作っています。
実務上で見ると横長はお勧めしません。データが多いならなおさらです。
なぜなら例えば"A-2"の,一回目、二回目、"A-3"の一回目、二回目と増えていくとX軸とY軸の両方が増加する表になるからです。集計や検索するときもX方向とY方向の2要素を考慮しなければなりません。実際コレは最高に手間になり関数やVBAも複雑になります。
私がオススメする縦長の表だとY軸しか増加しません。集計も検索もY方向のみ考慮すればいいだけです。特にデータが多くなっても根本的にY方向のみを考慮に入れればよいのです。
表を作り直せるのであれば縦長にすることをオススメします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
今まで文字化けなく開けていたc...
-
スプレッドシートで指定された...
-
ExcelでASCを使って全角を半角...
-
マクロの処理が遅くなった
-
Excel関数について教えてくださ...
-
作成した数式を値として表示し...
-
エクセルの質問です。 F列からL...
-
エクセルでファイルの最終更新...
-
EXCELの散布図で日付が1900年に...
-
【マクロ】VLOOKUPにて参照元に...
-
エクセルのセル内に分数などの...
-
Excelの警告について
-
Microsoft 365Excelの見開きペ...
-
Excel関数について教えてくださ...
-
シートの情報を別のシートへま...
-
Excelマクロで空白セルを詰めて...
-
【マクロ】フォルダ内にあるPDF...
-
index関数の説明をお願いします。
-
重複しない値を取り出したい
-
エクセルの数式バーのフォント...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの警告について
-
Excelで数値を時間数に変換する...
-
エクセルの数式バーのフォント...
-
エクセルで数字の組み合わせを...
-
エクセルを使用して、円周率を...
-
Excelで特定の文字列が含まれて...
-
Excel 対象のセルに入力が無い...
-
任意の値が存在する行に名前を...
-
エクセルでファイルの最終更新...
-
index関数の説明をお願いします。
-
条件付き書式でやりたいのですが
-
重複しない値を取り出したい
-
【ExcelVBA】UTF-8(BOM無)でC...
-
【マクロ】マクロが割当てされ...
-
エクセル IF計算式?でしょうか?
-
エクセルで曜日を入れたい
-
表中の指定した条件の文字列を...
-
【Excel】版が同じ事を示す番号...
-
EXCELの散布図で日付が1900年に...
-
Excelについて。Excelに縦1列に...
おすすめ情報