[[20101216184708]] 『難解な式』(見習い中) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『難解な式』(見習い中)
 E2に
 =IF(SUMPRODUCT(($A$1:$A$30=E$1)*($C$1:$C$30=ROW(A1))*ROW($A$1:$A$30))=0,"",INDEX($B$1:$B$30,SUMPRODUCT(($A$1:$A$30=E$1)*($C$1:$C$30=ROW(A1))*ROW($A$1:$A$30))))
 とあります。
 この式を、
 AC34411で使えようにするにはどこをどう書き換えれば良いのでしょうか。
 教えて下さい。
 ウインドウズXP
 2003です。


  AC34411でもE2と同じ結果を得たいということであれば、何も変更する必要は
ないようですけれども。
(みやほりん)(-_∂)b

 みやほりん様
 ところが違うんです。
 何度やっても出来ないんです。
 (見習い中)

 みやほりん様
 諦めます。
 頭がこんがらがってしまい、
 この問題自体どこからみつけてきたものかでさえわからなくなりました。
 有難うございました。今後ともご指導お願いします。
 (見習い中)

 あきらめたのであれば余計なお世話ですが、

 セルではなく、式自体をコピーすれば同じ参照先になります。
 セルをコピーして同じ先を参照するにはすべてのアドレスを $A$1 のように列と行の前に$を
 つければ、コピーしてもアドレスが変わらなくなります。

 そうではないのであれば、計算に使用するセルの参照先を提示しなければ適切な回答ができません。
 (Mook)


 今必死になって探したらありました。
 「列のリストから表を作成」という問題からの応用でした。
 あの問題の表はA1からのものです。
 私がしたいことは、AA34410からの表であの式を活用したいんです。
 何故そんなことをするのかというと面白そうなものや感心するものなど、
 とにかくエクセルファイルに集めているんです。
 その結果今回の問題がセルAA34410からまとめるようになったのです。
 (見習い中)

 $A$1:$A$30の範囲の条件として「E$1〜」を使用するのであれば、
E2の数式を数式バーからコピーして、AC34411の数式バーへ貼り付ければ良いのですが、
どうもそういうことでもないような。
 
この数式をセルコピーでどこでも好きな場所で使いたい、というのが希望だとすると、
そういう使い方を前提に設計された数式ではありません、ということです。
 
	A	B	C	D	E	F	G
[1]	あ	A	3		あ	い	う
[2]	い	B	2				
[3]	う	C	3			B	
[4]					A		C
 
E2:G4に入力してあるときはこう言う結果を返す式だと理解しているのですが。
(この例が適当かどうかはわかりません)
 
セルコピーしたときに、二箇所の「E$1」と「=ROW(A1)」の部分が、
見習い中さんが用意しているレイアウトとマッチしないんでしょうね。
 
まずは、小さな例で取り組むべきでしょう。
私の例で、E2には
=IF(SUMPRODUCT(($A$1:$A$3=E$1)*($C$1:$C$3=ROW(A1))*ROW($A$1:$A$3))=0,"",INDEX($B$1:$B$3,SUMPRODUCT(($A$1:$A$3=E$1)*($C$1:$C$3=ROW(A1))*ROW($A$1:$A$3))))
 と入力しています。
E1:G1を例えば、H50:J50に作成した場合は、
H51に次の数式となります。
=IF(SUMPRODUCT(($A$1:$A$3=H$50)*($C$1:$C$3=ROW(A1))*ROW($A$1:$A$3))=0,"",INDEX($B$1:$B$3,SUMPRODUCT(($A$1:$A$3=H$50)*($C$1:$C$3=ROW(A1))*ROW($A$1:$A$3))))
 
どこが変わって、どこが変わってないのか、にらめっこしてみてください。
 
(みやほりん)(-_∂)b
 
なんとなく↓を思い出すのですが。
[[20060302144720]] 『90より以上の人の名前を抽出したい』(shota)


 =IF(SUMPRODUCT(($AA$34410:$AA$34424=AE$34411)*($AC$34410:$AC$34424=ROW(AA34410))*ROW($AA$34410:$AA$34424))=0,"",INDEX($AB$34410:$AB$34424,SUMPRODUCT(($AA$34410:$AA$34424=AE$34411)*($AC$34410:$AC$34424=ROW(AA34410))*ROW($AA$34410:$AA$34424))))
 ここまではいけましたが後がわかりません。
 みやほりんさんの言うとおりshotaです。
 今回も助けてください。
 見習い中ことshotaより
 (見習い中)

 =IF(SUMPRODUCT(($A$1:$A$30=E$1)*($C$1:$C$30=ROW(A1))*ROW($A$1:$A$30))=0,"",INDEX($B$1:$B$30,SUMPRODUCT(($A$1:$A$30=E$1)*($C$1:$C$30=ROW(A1))*ROW($A$1:$A$30))))						

 項目A	あ	1		項目A	項目B	項目C
 項目A	い	2				
 項目A	う	3				
 項目A	え	4				
 項目A	お	5				
 項目B	か	1				
 項目B	き	2				
 項目B	く	3	
 項目B	け	4	
 項目B	こ	5	
 項目C	さ	1	
 項目C	し	2	
 項目C	す	3	
 項目C	せ	4	
 項目C	そ	5	
 ここまで出来ています。
 (見習い中)

 教えていただいている身分ですが大変つかれましたのでお先に失礼します。
 (見習い中)

 みやほりん様へ
 救急隊は救急T課程、救急U課程、救急救命士の3名です。
 救急救命士は、心肺停止の傷病者に対し、バックマスクによる人工呼吸及び心臓マッサージ、AED使用の他に、大きく分けて下記の3つの特定行為を行うことができます。
 @ 器具を用いた気道確保
 器具を用いた気道確保とは、人工呼吸を有効的に行うため、口からチューブを入れる処置で、チューブの種類は、大きく分類すると「食道閉鎖式エアウェイ」と「気管挿管」に分かれます。
 A 静脈路確保
 静脈路確保とは、医療機関到着後に医師により早く強心剤(心臓を動かすための薬)を入れることができるように、四肢の静脈に点滴ラインを取る処置のことです。
 B 薬剤投与
 薬剤投与とは、より早く心拍を再開させるための強心剤「アドレナリン」を医療機関に到着するまでの間に静脈路確保した点滴から投与する処置のことです。
 上にも書いてあるように救命士になったら3項目が実施できるのです。
 ちょうど私が昇任して分隊長になってからのことです。
 救命士が当番でいない日があるんです。
 何故いないのか。人員が少ないからです。
 野球は9人でするものだが、消防に任せたら6人しか人員がいない。
 そんな救命士が公休の日に限って死亡しそうな患者が出るんです。
 家族が同乗してきて見ています。「何故何もしないの」
 私はU課程なんです。出来ないんです。
 @番ぐらいはしますよ。
 そして非番でうちに帰っても心配でたまりません。
 今頃家族が苦情を言いに来ていないだろうかと・・・
 60キロの体重がストレスから86キロになり脳梗塞となったのです。
 右半身不随と痛みがあります。この痛みが年々ひどくなってきています。
 46歳のときでした。
 後輩にエクセルの得意な人がいて付きっ切りで教えてもらいました。
 そして6年かけて各様式をエクセルで作り終えました。
 何もすることがありません。
 市役所みたいな事務職なら何とかなりそうだけれど消防にはいりませんよね。
 妻は働いてと言っていたが、52歳で退職しました。
 それ以来口も聞きません。
 母がご飯を作ってくれます。
 エクセルの学校で集めて資料、1Mの大きさにして20ファイルあります。
 ヤフーメッセンジャーで「エクセル勉強しませんか」という部屋を開いています。
 もう1000人の人に配ったと思います。
 私事ばかりでしたがすみません。
 今後ともよろしくお願いいたします。
 (shota)


 例題のデータはソートされています。必ずソートされているのであれば、もっと簡単な式でできますが。(NB)

 A1からなら出来るのでSheet2を使いそこで作りました。
 AAに持っていくのはあきらめました。
 NB様のご配慮有難うございます。
 (shota)

 少し気になったので。

 >何故そんなことをするのかというと面白そうなものや感心するものなど、
 >とにかくエクセルファイルに集めているんです。

 参考になるものを集める事よりも、同じ事を実践してみて「理解」する事が近道なのでは?
 と思います。

 質問者さんが理解する為なら回答者の方々も頑張って下さります。
 でも、単に集めて終わりではそれが永遠に増えていくだけで何にもなりません。
 応用が利かないからです。

 理解してしまえば、そもそも「集める」なんて事がいらなくなると思いますよ?
 頑張ってください。
 (momo)

 momo様ご指摘感謝いたします。
 私はもういいんです。
 いまさら頑張ってみても何も得るものがありません。
 それよりも若い人にエクセルのよさを理解してもらって活用して欲しいのです。
 NB様先ほどは失礼しました。簡単な方法があるのなら教えて下さい。
 (shota)

 >それよりも若い人にエクセルのよさを理解してもらって活用して欲しいのです。
 であれば、尚更ご年輩の方にも頑張って頂きたいです。
 地道に頑張る努力を知っておられるのですから、その姿勢自体が目標となります。

 若輩者の戯言に付きご無礼がありましたら失礼致しました。
 (momo)

 momo様有難うございました。今後ともご指導お願いします。
 9時からパソコンにかじりついてもう右半身が限界が来ました。
 少し横にならせていただきます。
 (shota)

 とりあえずは目的の位置で機能する数式の作り方です。
 
実際に作成したいのはSheet1の $AA$34410:$AG$34425 であると仮定します。
Sheet2にA1から機能する表が下記のように作ってあるとします。
	A	B	C	D	E	F	G
[1]	項目A	あ	1		項目A	項目B	項目C
[2]	項目A	い	2				
[3]	項目A	う	3				
[4]	項目A	え	4				
[5]	項目A	お	5				
[6]	項目B	か	1				
[7]	項目B	き	2				
[8]	項目B	く	3				
[9]	項目B	け	4				
[10]	項目B	こ	5				
[11]	項目C	さ	1				
[12]	項目C	し	2				
[13]	項目C	す	3				
[14]	項目C	せ	4				
[15]	項目C	そ	5				
 
Sheet2!E2の数式は
=IF(SUMPRODUCT(($A$1:$A$30=E$1)*($C$1:$C$30=ROW(A1))*ROW($A$1:$A$30))=0,"",INDEX($B$1:$B$30,SUMPRODUCT(($A$1:$A$30=E$1)*($C$1:$C$30=ROW(A1))*ROW($A$1:$A$30))))
です。
 
Sheet2!E2の式を次のように変更します。
=IF(SUMPRODUCT(($A$1:$A$30=E$1)*($C$1:$C$30=ROW(Sheet1!A1))*ROW(Sheet1!$A$1:$A$30))=0,"",INDEX($B$1:$B$30,SUMPRODUCT(($A$1:$A$30=E$1)*($C$1:$C$30=ROW(Sheet1!A1))*ROW(Sheet1!$A$1:$A$30))))
 
変更した式を必要な範囲にコピーします。計算結果は同じです。
Sheet2で1行目から34409行目までを範囲選択して行を挿入します。
同じく、Sheet2でA列からZ列までを範囲選択して列を挿入します。
 
元の表は移動して Sheet2のAA34410 から始まっているはずです。
移動しても希望通りの計算をしているはずです。
このSheet2の表を本来入力したい Sheet1のAA34410 へ貼り付けます。
 
(みやほりん)(-_∂)b


 >=IF(SUMPRODUCT(($AA$34410:$AA$34424=AE$34411)*($AC$34410:$AC$34424=ROW(AA34410))*ROW($AA$34410:$AA$34424))=0,"",INDEX($AB$34410:$AB$34424,SUMPRODUCT(($AA$34410:$AA$34424=AE$34411)*($AC$34410:$AC$34424=ROW(AA34410))*ROW($AA$34410:$AA$34424))))
 >ここまではいけましたが後がわかりません。

 実際にやりたいことは
 >=IF(SUMPRODUCT(($AA$34410:$AA$34424=AE$34411)*($AC$34410:$AC$34424=ROW(A1))*ROW($AA$34410:$AA$34424))=0,"",INDEX($AB:$AB,SUMPRODUCT(($AA$34410:$AA$34424=AE$34411)*($AC$34410:$AC$34424=ROW(A1))*ROW($AA$34410:$AA$34424))))

 同じことですが
 =IF(SUMPRODUCT(($AA$34410:$AA$34424=AE$34411)*($AC$34410:$AC$34424=ROW(A1))*ROW($A$1:$A$25))=0,"",INDEX($AB$34410:$AB$34424,SUMPRODUCT(($AA$34410:$AA$34424=AE$34411)*($AC$34410:$AC$34424=ROW(A1))*ROW($A$1:$A$25))))

 $AC$34410:$AC$34424=ROW(A1) の ROW(A1) は 1,2,3・・と1から始まる連番を出している

 後段の ROW(範囲)は位置情報を求めている
 たとえば A10 をクリックして何行目かを問えば A列の10行目と答えますね
 範囲 A5:A15 の中で A10 をクリックして何行目かを問えば 6行目と答えますね
 
 同様に INDEX(範囲,SUMPRODUCT・・・の範囲に合わせて変更します 

 説明は面倒なのであとは省略

 By

  一部不必要と思いますので
 =IF(SUMPRODUCT(($AA$34410:$AA$34424=AE$34411)*($AC$34410:$AC$34424=ROW(A1)))=0,"",INDEX($AB:$AB,SUMPRODUCT(($AA$34410:$AA$34424=AE$34411)*($AC$34410:$AC$34424=ROW(A1))*ROW($AA$34410:$AA$34424))))

 同じことですが
 =IF(SUMPRODUCT(($AA$34410:$AA$34424=AE$34411)*($AC$34410:$AC$34424=ROW(A1)))=0,"",INDEX($AB$34410:$AB$34424,SUMPRODUCT(($AA$34410:$AA$34424=AE$34411)*($AC$34410:$AC$34424=ROW(A1))*ROW($A$1:$A$25))))

 違う式にしてみました
 =IF(SUMPRODUCT(($AA$34410:$AA$34424=AE$34411)*($AC$34410:$AC$34424=ROW(A1)))=0,"",LOOKUP(1,0/(($AA$34410:$AA$34424=AE$34411)*($AC$34410:$AC$34424=ROW(A1)),$AB$34410:$AB$34424))

 編集 15:00

 皆様へ感謝
 別シートに「ROW関数』という名をつけて無事作成しました。
 いろいろとご指導ありがたく思っています。
 (shota)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.