• ベストアンサー

Excel 数式の意味を教えて

先日 この相談箱で下記のような数式をアドバイスしていただきました   =SUMPRODUCT((MATCH(A$1:A$200&B$1:B$200,INDEX(A$1:A$200&B$1:B$200,),0)=ROW(A$1:A$200))*(A$1:A$200=A2)) 所期の解を得ることができ大変ありがたく思っておりますが 今度はこの数式の意味を知ればほかでも応用できるのではないかと思い アドバイスをお願いする次第です 特に”&”が2箇所で使われていますが これはどういう働きをしているのでしょうか こういう使われ方をしているページでもあれば教えていただけないでしょうか よろしくお願いします

noname#140567
noname#140567

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

A列が番号でB列が氏名であるときに同じ番号と氏名の行が幾つあるかでしたら,例えば=SUMPRODUCT((A$1:A$200=A2)*(B$1:B$200=B2))でよいのですが、同じ番号で何種類の氏名があるかとなりますと、ある行でのAセルの値とBセルの値を合成した値が合成した値の列で何行目にあるかをMATCH関数を使って調べ、そこで得られた行がある行と同じ行であれば1、そうでなければ0、となるようにして求め、しかも、A列での番号がある行と同じ番号であるケースを求めることになります。 同じ番号で氏名が一つの場合にはMATCH関数で求められる行は常に1行のみであることからSUMPRODUCT関数の結果は1であるのに対して、番号が同じで氏名が2種類ある場合には2つの行がMATCH関数では1となり、したがってSUMPRODUCT関数の結果では2となります。 &はA列の値とB列の値を結び付けて合成した文字列を作るために使われています。

noname#140567
質問者

お礼

ありがとうございました てっきりもっと複雑な作用をしているものと決め付けて 基本を見失っていました 言われてみれば ナルホド と合点です ありがとうございました

その他の回答 (1)

  • imasokari
  • ベストアンサー率30% (25/81)
回答No.1

おはようございます。  "&"は「数式ではない足し算」で"+"は「数式の足し算」だったような気がします。 A1…小泉 B1…純一郎 として、 C1…="A1"&"B1" とすると C1…小泉純一郎 になるみたいな。  この数式の&の使われ方には別の意味があるかもなので、参考程度にしてください。

noname#140567
質問者

お礼

回答ありがとうございました

関連するQ&A

  • エクセル数式の選択。

    (表A)=INDEX(総合見積もり!$E$15:U19,MATCH(D5,総合見積もり!$D$15:$D$19,0),MATCH($E$3,総合見積もり!$E$14:$U$14,0)) (表B)=INDEX(総合見積もり!$E$22:$T$26,MATCH(D5,総合見積もり!$D$22:$D$26,0),MATCH($E$3,総合見積もり!$E$21:$U$21,0)) (表A)(表B)2つの表を元に二通りの数式を作ったのですが。 仮にE3のセルにAと入力すると(表A)の数式、Bと入力すると(表B)の数式を選択する関数又は方法 ありましたら教えて下さい。 IF関数で出来そうなのですがエクセル初心者のため良く分かりません 宜しくお願いします。

  • エクセル2010 同データの検索と関連セルの表示

    先の質問、 http://okwave.jp/qa/q8405162.html において、実践後の画像を再アップさせて頂きます。 まずは、S1セルに =IF(INDEX($Y:$Y,ROW())="","",INDEX($Y:$Y,ROW())&"■"&COUNTIF(INDEX($Y:$Y,1):INDEX($Y:$Y,ROW()),INDEX($Y:$Y,ROW()))) を入力後、ctrl + ENTER で確定し、オートフィルで最下部まで。 その後、すべてctrl + ENTER で 以下を貼り付けました。 B9セル =IF(INDEX($4:$4,COLUMN())="","",IF(ROUNDUP((ROW()-ROW($A$8))/4,0)>COUNTIF($Y:$Y,INDEX($4:$4,COLUMN())),"",IF(INDEX($V:$V,MATCH(INDEX($4:$4,COLUMN())&"■"&ROUNDUP((ROW()-ROW($A$8))/4,0),$S:$S,0))="","",INDEX($V:$V,MATCH(INDEX($4:$4,COLUMN())&"■"&ROUNDUP((ROW()-ROW($A$8))/4,0),$S:$S,0))))) B10セル =IF(INDEX($4:$4,COLUMN())="","",IF(ROUNDUP((ROW()-ROW($A$8))/4,0)>COUNTIF($Y:$Y,INDEX($4:$4,COLUMN())),"",IF(INDEX($Z:$Z,MATCH(INDEX($4:$4,COLUMN())&"■"&ROUNDUP((ROW()-ROW($A$8))/4,0),$S:$S,0))="","",INDEX($Z:$Z,MATCH(INDEX($4:$4,COLUMN())&"■"&ROUNDUP((ROW()-ROW($A$8))/4,0),$S:$S,0))))) B11セル =IF(INDEX($4:$4,COLUMN())="","",IF(ROUNDUP((ROW()-ROW($A$8))/4,0)>COUNTIF($Y:$Y,INDEX($4:$4,COLUMN())),"",IF(INDEX($AA:$AA,MATCH(INDEX($4:$4,COLUMN())&"■"&ROUNDUP((ROW()-ROW($A$8))/4,0),$S:$S,0))="","",INDEX($AA:$AA,MATCH(INDEX($4:$4,COLUMN())&"■"&ROUNDUP((ROW()-ROW($A$8))/4,0),$S:$S,0))))) B12セル =IF(INDEX($4:$4,COLUMN())="","",IF(ROUNDUP((ROW()-ROW($A$8))/4,0)>COUNTIF($Y:$Y,INDEX($4:$4,COLUMN())),"",IF(INDEX($AC:$AC,MATCH(INDEX($4:$4,COLUMN())&"■"&ROUNDUP((ROW()-ROW($A$8))/4,0),$S:$S,0))="","",INDEX($AC:$AC,MATCH(INDEX($4:$4,COLUMN())&"■"&ROUNDUP((ROW()-ROW($A$8))/4,0),$S:$S,0))))) C9セル =IF(INDEX($4:$4,COLUMN()-1)="","",IF(ROUNDUP((ROW()-ROW($A$8))/4,0)>COUNTIF($Y:$Y,INDEX($4:$4,COLUMN()-1)),"",IF(COUNT(INDEX($U:$U,1):INDEX($U:$U,MATCH(INDEX($4:$4,COLUMN()-1)&"■"&ROUNDUP((ROW()-ROW($A$8))/4,0),$S:$S,0))),LOOKUP("9999/12/31"+1,INDEX($U:$U,1):INDEX($U:$U,MATCH(INDEX($4:$4,COLUMN()-1)&"■"&ROUNDUP((ROW()-ROW($A$8))/4,0),$S:$S,0))),""))) C9セルの書式設定の表示形式を[日付]に。 C10セル =IF(ISERROR(1/(INDEX($U:$U,MATCH("9999/12/31"+1,INDEX($U:$U,1):INDEX($U:$U,MATCH(INDEX($4:$4,COLUMN()-1)&"■"&ROUNDUP((ROW()-ROW($A$8))/4,0),$S:$S,0)))+3)<>"")),"",INDEX($U:$U,MATCH("9999/12/31"+1,INDEX($U:$U,1):INDEX($U:$U,MATCH(INDEX($4:$4,COLUMN()-1)&"■"&ROUNDUP((ROW()-ROW($A$8))/4,0),$S:$S,0)))+3)) C11セル =IF(INDEX($4:$4,COLUMN()-1)="","",IF(ROUNDUP((ROW()-ROW($A$8))/4,0)>COUNTIF($Y:$Y,INDEX($4:$4,COLUMN()-1)),"",IF(INDEX($AB:$AB,MATCH(INDEX($4:$4,COLUMN()-1)&"■"&ROUNDUP((ROW()-ROW($A$8))/4,0),$S:$S,0))="","",INDEX($AB:$AB,MATCH(INDEX($4:$4,COLUMN()-1)&"■"&ROUNDUP((ROW()-ROW($A$8))/4,0),$S:$S,0))))) C12セル =IF(INDEX($4:$4,COLUMN()-1)="","",IF(ROUNDUP((ROW()-ROW($A$8))/4,0)>COUNTIF($Y:$Y,INDEX($4:$4,COLUMN()-1)),"",IF(INDEX($AD:$AD,MATCH(INDEX($4:$4,COLUMN()-1)&"■"&ROUNDUP((ROW()-ROW($A$8))/4,0),$S:$S,0))="","",INDEX($AD:$AD,MATCH(INDEX($4:$4,COLUMN()-1)&"■"&ROUNDUP((ROW()-ROW($A$8))/4,0),$S:$S,0))))) 機器Aの1回目は求める数値を抜き出して表示してくれています。 それを、コピー&ペーストで 機器Bの1回目、機器Aの2回目に貼り付けました。 これは、オートフィルでも同じ数値が帰って来ます。 それで問題点なのですが、 機器Bの1回目、E9セルには1月1日と、E10セルには空白が帰って来ています。 また機器Aの2回目も同じ場所、C13セルが1月2日と、C14セルが空白で帰って来ています。 ちなみにE9セルの数式は =IF(ISERROR(1/(INDEX($U:$U,MATCH("9999/12/31"+1,INDEX($U:$U,1):INDEX($U:$U,MATCH(INDEX($4:$4,COLUMN()-1)&"■"&ROUNDUP((ROW()-ROW($A$8))/4,0),$S:$S,0)))+3)<>"")),"",INDEX($U:$U,MATCH("9999/12/31"+1,INDEX($U:$U,1):INDEX($U:$U,MATCH(INDEX($4:$4,COLUMN()-1)&"■"&ROUNDUP((ROW()-ROW($A$8))/4,0),$S:$S,0)))+3)) E10セルの数式は =IF(ISERROR(1/(INDEX($U:$U,MATCH("9999/12/31"+1,INDEX($U:$U,1):INDEX($U:$U,MATCH(INDEX($4:$4,COLUMN()-1)&"■"&ROUNDUP((ROW()-ROW($A$8))/4,0),$S:$S,0)))+3)<>"")),"",INDEX($U:$U,MATCH("9999/12/31"+1,INDEX($U:$U,1):INDEX($U:$U,MATCH(INDEX($4:$4,COLUMN()-1)&"■"&ROUNDUP((ROW()-ROW($A$8))/4,0),$S:$S,0)))+3)) となっています。 これで問題点が明らかになるでしょうか? よろしくお願いいたします。

  • エクセル参照リンクについて

    先日質問しました内容ですが、「KURUMITO」さんよりすばらしい解答をいただきましてありがとう ございます。 (投稿日時 - 2013-06-21 13:45:07) あと一つご指導ください。 Sheet2にはA20行から次の1週間分があります。 この場合、下のどの部分を変更してB21に張り付ければいいのかよくわからず困っています。 ご指導ください 「KURUMITO」様の前回のご指導内容 例えばシート2のA1セルには楢崎、岡などの文字が、B1セルから右横に日付が、A2セルから下方には9:00-10:30などがA19までの範囲に入力されているとしてB2セルには次の式を入力して右横方向にドラッグコピーしたのちに下方の行番号の19までドラッグコピーします。 =IF(COUNTIF(INDEX(Sheet1!$A:$BS,MATCH(INDEX($A:$A,ROUNDUP(ROW(A1)/3,0)*3-1),Sheet1!$A:$A,0)+MOD(ROW(A1)-1,3),MATCH(B$1,Sheet1!$A$2:$BS$2,0)):INDEX(Sheet1!$A:$BS,MATCH(INDEX($A:$A,ROUNDUP(ROW(A1)/3,0)*3-1),Sheet1!$A:$A,0)+MOD(ROW(A1)-1,3),MATCH(B$1,Sheet1!$A$2:$BS$2,0)+9),$A$1)=0,"",INDEX(Sheet1!$B$4:$M$4,MATCH($A$1,INDEX(Sheet1!$A:$BS,MATCH(INDEX($A:$A,ROUNDUP(ROW(A1)/3,0)*3-1),Sheet1!$A:$A,0)+MOD(ROW(A1)-1,3),MATCH(B$1,Sheet1!$A$2:$BS$2,0)):INDEX(Sheet1!$A:$BS,MATCH(INDEX($A:$A,ROUNDUP(ROW(A1)/3,0)*3-1),Sheet1!$A:$A,0)+MOD(ROW(A1)-1,3),MATCH(B$1,Sheet1!$A$2:$BS$2,0)+9),0)))

  • エクセルの数式について!

    初歩的な質問ですが、ある数式の解がマイナスになる場合はゼロにしたいのですが 例えば、=MIN(MAX(A1-A2,B1-B2),3)この解がマイナスになる場合にゼロという条件式を追加したいのですが、どうすればいいのでしょう?IF関数だと思うのですが・・・。よろしくお願いします。

  • ExcelセルにVBAでINDEX関数を入力

    ExcelでINDEX関数とMATCH関数で"B11:E13"セルに以下の数式データがあります。 数式は "B11"=IF(ISERROR(INDEX($A$1:$A$9,MATCH(1,B$15:B$23,0))),"",INDEX($A$1:$A$9,MATCH(1,B$15:B$23,0))) "B12"=IF(ISERROR(INDEX($A$1:$A$9,MATCH(2,B$15:B$23,0))),"",INDEX($A$1:$A$9,MATCH(2,B$15:B$23,0))) "B13"=IF(ISERROR(INDEX($A$1:$A$9,MATCH(3,B$15:B$23,0))),"",INDEX($A$1:$A$9,MATCH(3,B$15:B$23,0))) "C11"==IF(ISERROR(INDEX($A$1:$A$9,MATCH(1,C$15:C$23,0))),"",INDEX($A$1:$A$9,MATCH(1,C$15:C$23,0))) "B15~B23"に数値1~3を入力した場合イニシャルA~I が入力される式ですが、列を連続で入力できるような処理をVBAのWorksheetFunctionで行うにはどのようにコードを記述すればよいのでしょうか。 ご回答のほどよろしくお願いします。

  • EXCELで、データの種類の数を求めるのに、

    EXCELで、データの種類の数を求めるのに、 =COUNT(INDEX(1/(MATCH(A1:A10,A1:A10,)=ROW(A1:A10)),)) という数式で求める事ができるとQ&Aがありました。 この中のINDEX関数の意図がよくわからないのですが、 どなたか解説していただけませんか?

  • この数式の意味を教えてください(Excel)

    B1のセルに=REPT(",",ROW())&A1という数式が入力されている場合どういう計算をしなさいという意味になりますか?教えてください。

  • エクセル関数 SUMPRODUCTについて

    エクセル関数でSUMPRODUCTについて質問させていただきます。 ↓A1 コーラ  A ポカリ  A 珈琲   A 石鹸   B 洗剤   B ポカリ  A 食パン  C 菓子パ  C 洗剤  B   3←C11(Aの数を数えています。) と、入力されているデータにおいては、 =SUMPRODUCT((MATCH($A$1:$A$9&$B$1:$B$9,$A$1:$A$9&$B$1:$B$9,0)=ROW($A$1:$A$9))*($B$1:$B$9="A")) の関数で求めるデータが出ることはわかりました。 (Aの数は4個ですが、ポカリがダブっているので3個として数えるように設定したいのです。同じ様にBの数は洗剤が2つあるので2個として計算します。) しかし、A1~C11のデータをすべて切り取りして 例えばA11からC21に貼り付けた場合はC21の計算結果が”0”になってしまいます。 その際のC21の関数は =SUMPRODUCT((MATCH($A$11:$A$19&$B$11:$B$19,$A$11:$A$19&$B$11:$B$19,0)=ROW($A$11:$A$19))*($B$11:$B$19="A")) になっています。 この場合だと具体的にどのように関数を変化させればいいのでしょうか? ご指導いただければありがたいです。よろしくお願いします。<m(__)m>

  • エクセル数式・等間隔ごとの範囲にしたい(再)

    数日前にココに質問させていただいて、回答をもらえたのですが 私の説明不足で、よい結果が得られなかったので、もう一度質問させていただきます countif関数で範囲を等間隔にしたいです、と質問したところ =SUMPRODUCT((A1:A1000="あ")*(MOD(ROW(A1:A1000),10)=1)) との回答をいただきました 残念ながら、都合でその数式が書かれているセルが 範囲の中に入ってしまっていて、循環になってしまいます 範囲を等間隔に出来れば循環にならないと思い質問させていただいたのですが そこを書かなかったので、望みの数式になりませんでした 循環にならない方法で何とかなりませんでしょうか?

  • この数式(関数)の内容を教えて下さい

    お早うございます。いつも、お世話になっております。実は、このOKWaveサイトでエクセルの表の仕分けについて質問しました。皆さまに、懇切丁寧に教えて頂き、つい先ほど何回も繰り返し読み返し作業した結果、無事、一番やりたかったことが出来ました。そこで、今後、エクセルをもっと使いこなせるように、二人の方に回答頂いた次の数式(関数?)は、どういう事を、表しているのでしょか?また、これに関しては、どのサイトで勉強すればいいのでしょうか?教えて下さい。 まず、下記の数式です。 =IF(ISNUMBER(B1),B1,TRIM(B1)) 次に下記の式です。これは、2段階で作業するように指示されました。 (1)まず、を入力する。 =IF($A2=D$1,COUNTIF($A$2:$A2,D$1),"") (2)そして、下記を入力する。 =INDEX(Sheet1!$B:$B,MATCH(ROW(A1),Sheet1!D:D,0)) どうぞ、今後の勉強のため宜しくお願いします。

専門家に質問してみよう