重複を防ぐための解決策

このQ&Aのポイント
  • シート「月別」の作業列において、同じ金額が重複して表示されず、名前が表示されない問題が発生しています。
  • この問題を解決するための方法をご教示いただけませんか?
  • また、ExcelのIF関数やINDEX関数を使用して、重複を防ぐ方法を検討しています。
回答を見る
  • ベストアンサー

MATCH LARGE などで重複を防ぐには

いつもお世話になります。 WIN7 EXCELL2010 です。 次のような問題点があります。 シート「記入」から シート「月別」AC列 AD列を作業列に。 この時、例えば シート「月別」AD6 AD7 に同じ金額の20,000があり Z5 Z6 に「佐々木」が重複し 「星野」が表示されません。 これを防ぐ方法で何かいい解決策はありませんでしょうか。 ご指導いただければ幸甚です。 よろしくお願いします。 参考 Y4 =IF(OR(記入!C2="",AA2=0),"",COUNTA(記入!$C$2:$C2)) Z4 =IF(COUNTIF($AC$4:$AC$100,"?*")<ROW(G1),"",INDEX(AC$4:AC$100,MATCH(LARGE($AD$4:$AD$100,ROW(G1)),$AD$4:$AD$100,0))) AA4 =IF(AC4="","",SUMIF($AC$3:$AC$100,Z4,$AD$3:$AD$100)) AC4 =IF(COUNT(記入!$G$1:$G$3000)<ROW($A1),"",INDEX(記入!$C$1:$C$3000,SMALL(記入!G$1:G$3000,ROW(A1)))) AD4 =IF(AC4="","",SUMPRODUCT((記入!$B$2:$B$3000>=DATEVALUE($AB$2))*(記入!$B$2:$B$3000<DATEVALUE($AH$2))*(記入!$C$2:$C$3000=AC4),記入!$D$2:$D$3000))

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.16

>上の数式は A が抜けていると私なりに考えて下記のようにしました。 =INDEX($AC$4:$AC$100,MATCH(LARGE(IF($AD$4:$AD$100="",0,$AD$4:$AD$100)+ROW($AD$4:$AD$100)/10000,ROW(1:1)),IF($AD$4:$AD$100="",0,$AD$4:$AD$100)+ROW($AD$4:$AD$100)/10000,))&"" #N/A が出ます。 ご指摘のようにセル範囲が間違えていました。 配列数式ですので、数式入力後、CtrlキーとShiftキーを押しながらEnterで確定してください(こちらでも検証し、文字列が含まれていてもうまく表示できることを確認してます)。

dorasuke
質問者

お礼

上手くできました。 本当に大変な思いでご指導いただき誠に有難うございました。 作業列がないのが良いですね。

その他の回答 (16)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.17

> 「他の式にも色々と手を加えたい箇所がありますが」 > 欲張り高望みですがご指導いたたけませんでしょうか AB2やAH2に文字列で日付を入れずに日付のシリアル値を入れた方が良いとか、AD列の式はSUMIFSを使った方がスッキリする等です。 #本日多忙につき、具体的な式を挙げることが出来ず、この程度で失礼。

dorasuke
質問者

お礼

本当に大変な思いで御指導いただき誠に有難うございます。 AB AH AD列は私なりに頑張ります。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.15

>それぞのセルにご指導の数式を下記のように入力した結果、 Y4 =RANK(LARGE(記入!$D$1:$D$3000,ROW(A1)),記入!$D$1:$D$3000) #NUM! 表示される 記入!D1:D3000のデータは数字なのでしょうか? >Z4 =INDEX($AC$4:$AC$100,MATCH(LARGE($AD$4:$AD$100+ROW($4:$100)/10000,ROW(1:1)),$AD$4:$AD$100+ROW($AD$4:$AD$100)/10000,)) #VALUE! 表示される 私のところでは(通常の金額が入力されているなら)問題なく大きい順に名前が表示されますが、#VALUE!エラーが出るということは範囲に文字列が混入しているパターンと思われます。 AD列の数字が数式で表示している場合は、空白文字列が混入することになりますので、以下のように数式を変更してみてください。 =INDEX($C$4:$C$100,MATCH(LARGE(IF($D$4:$D$100="",0,$D$4:$D$100)+ROW($D$4:$D$100)/10000,ROW(1:1)),IF($D$4:$D$100="",0,$D$4:$D$100)+ROW($D$4:$D$100)/10000,))&"" ちなみに私の提示した数式は、N014の方の回答で補助列なしに金額の大きい順に名前を並べ替える数式です。 >次に シート「記入」より 顧客名/売上 を入力すると Y4 1 Z4 #N/A AA4 0 の表示になります。 私の提示した数式はAA4が0になることと関係がないと思うのですが・・・・ #ひとまず本題のZ4セルの数式だけ検証して、正しい値(重複のない名前)が返るか調べてみてください。

dorasuke
質問者

補足

ご指導を感謝しています。 補足します。 記入!D1:D3000のデータは数字なのでしょうか? 数値です ユーザー定義でも 数値 に確認しています。 念のために AC 標準 AD 数値 ユーザー定義です AD列の数字が数式で表示している場合は、空白文字列が混入することになりますので、以下のように数式を変更してみてください。 =INDEX($C$4:$C$100,MATCH(LARGE(IF($D$4:$D$100="",0,$D$4:$D$100)+ROW($D$4:$D$100)/10000,ROW(1:1)),IF($D$4:$D$100="",0,$D$4:$D$100)+ROW($D$4:$D$100)/10000,))&"" 上の数式は A が抜けていると私なりに考えて下記のようにしました。 =INDEX($AC$4:$AC$100,MATCH(LARGE(IF($AD$4:$AD$100="",0,$AD$4:$AD$100)+ROW($AD$4:$AD$100)/10000,ROW(1:1)),IF($AD$4:$AD$100="",0,$AD$4:$AD$100)+ROW($AD$4:$AD$100)/10000,))&"" #N/A が出ます。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.14

これでどうかな? 「月別」シートに作業列を作ります。 #例としてAE列を作業列に使用した場合の式です。 AE4 =IF(AD4="","",AD4+ROW()/100) Z4 =IFERROR(INDEX(AC$4:AC$100,MATCH(LARGE($AE$4:$AE$100,ROW(G1)),$AE$4:$AE$100,0)),"") 他の式にも色々と手を加えたい箇所がありますが、とりあえず問題となっている箇所のみとします。

dorasuke
質問者

補足

御指導ありがとうございます。 今まで試していました。 お陰様で問題が解決しました。 かなりの労をかけて申し訳ありません。 本当にありがとうございました。 「他の式にも色々と手を加えたい箇所がありますが」 欲張り高望みですがご指導いたたけませんでしょうか もしお差し支えなければ有難いのですが。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.13

>試しました。 結果は 1 Z4 空白 Z5~ #VALUE 2 確認ですが、参照するセルは添付画像の通りなのですよね。 こちらでは実際にAC4セル以下に名前、AD4セル以下に金額データを入力して、検証して正常に値が返ることを確認しています。 >AA AB 列の値も消えてしまいました。 私の提示した数式はこれらの列には何も影響を及ぼしません。 提示した数式は、単純に名前を金額のセルを参照し、金額が大きい順に(同じ金額がある場合でも)名前を表示する関数です。 煩雑な数式をたくさん使用されているので、何か勘違いの操作をしていないか落ち着いて確認してください(別のシートにAC4:AD100セルの値をコピーして、ご希望の表示ができることを確認してみてください)。

dorasuke
質問者

補足

私のためにご迷惑かけます。 新たに作り直して試しました。 それぞのセルにご指導の数式を下記のように入力した結果、 Y4 =RANK(LARGE(記入!$D$1:$D$3000,ROW(A1)),記入!$D$1:$D$3000) #NUM! 表示される Z4 =INDEX($AC$4:$AC$100,MATCH(LARGE($AD$4:$AD$100+ROW($4:$100)/10000,ROW(1:1)),$AD$4:$AD$100+ROW($AD$4:$AD$100)/10000,)) #VALUE! 表示される 次に シート「記入」より 顧客名/売上 を入力すると Y4 1 Z4 #N/A AA4 0 の表示になります。 AC AD 正常に表示されます。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.12

No11の回答の数式(セル参照)に誤りがありましたので以下のように訂正してください。 =INDEX($AC$4:$AC$100,MATCH(LARGE($AD$4:$AD$100+ROW($4:$100)/10000,ROW(1:1)),$AD$4:$AD$100+ROW($AD$4:$AD$100)/10000,)) 配列数式なのでCtrl+Shift+Enterで確定してください。

dorasuke
質問者

補足

何度もすみません。 捕捉するのが辛くて本当に申し訳ありません。 試しました。 結果は 1 Z4 空白 Z5~ #VALUE 2 AA AB 列の値も消えてしまいました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.11

AC列に表示されているデータのレイアウトを少し勘違いして回答したようなので(元の数式を利用としたため)、単純に以下のようにその範囲のデータで、金額の大きい順に名前を並べ替える数式にするほうがよいようです。 AC列とAD列に表示されている名前を値の大きい順に並べ替えたいなら、以下の数式を入力して下方向にオートフィルしてみてください(適宜エラー処理をしてください)。 =INDEX($AC$4:$AC$100,MATCH(LARGE($AD$4:$AD$100+ROW($4:$100)/10000,ROW(1:1)),$D$4:$D$100+ROW($AD$4:$AD$100)/10000,))

dorasuke
質問者

補足

何度もすみません。 御指導の数式を入力してみました。 結果は 空白 になりました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.10

>下記の数式で試させていただきました。 =IF(COUNTIF($AC$4:$AC$100,"?*")<ROW(G1),"",INDEX(AC$4:AC$100,MATCH(LARGE($AD$4:$AD$100,ROW(G1))+COUNTIF($Y$4:Y4,Y4)-1,$AD$4:$AD$100,0))) やはり問題の解決にはなりませんでした。 同じ 合計 があるとき 顧客名は 同じになります。 Y列の順位を示す関数も、No3で回答したように修正したのでしょうか?(同じ金額の場合は同じ順位になっていますか)

dorasuke
質問者

補足

お忙しいところを私のためにご指導有難うございます。 すこし諦めかけていたところ元気がでます。 Y4 =RANK(LARGE(記入!$D$1:$D$3000,ROW(A1)),記入!$D$1:$D$3000) Z4 =IF(COUNTIF($AC$4:$AC$100,"?*")<ROW(G1),"",INDEX(AC$4:AC$100,MATCH(LARGE($AD$4:$AD$100,ROW(G1))+COUNTIF($Y$4:Y4,Y4)-1,$AD$4:$AD$100,0))) 確実に入れました。 その結果、 参照図で言いますと シート「月別」 Z6(佐々木)  に (星野)が表示されなければならないのに 「#N/A」 が表示されます。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.9

No.2です。 補足の >AC4 より以下が空白になります。 >AC4 を下にオートフィルするとちゃんとした値が表示されます の件ですが、 質問文の「参考」にすでにAC列の数式はお示しですよね? アップされている画像まではちゃんとできている!という前提で回答しました。 せっかくAC・AD列もご自身で数式をお考えになり結果を出していらっしゃいますので こちらで余計なお世話を焼いては失礼かと思い すでに表示されている結果を利用して、 もう1列作業列を設ける方法を提案したまでです。m(_ _)m

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.8

>AC列、AD列の検証も必要であればシート「記入」のG列の値を開示してください。 シート「記入」のG2の値=IF(COUNTIF($C$2:C2,C2)=1,ROW(),"") と言うことでしょうか? 質問の貼付画像のAB2とAH2に文字列として日付の情報が読み取れませんがどのようになっているのでしょうか? AB2以上でAH2未満の日付(シリアル値)に該当する売上の合計と言うことであればAB2セルとAH2セルに的確な値があれば問題ないようです。 実際のデータでAC列とAD列が正しく表示されているか否かはあなた自身で確認できます。 誤りがあれば原因を自主的に追及してください。 Z列とAA列については回答No.7で再確認してください。 尚、Y列についてはRANK関数に変更して引数をAA列にするよう訂正された方が良いでしょう。 AA4=RANK(AA4,AA$4:AA$100,0) 提示の模擬データでは1位、2位、2位、4位、5位の順位が表示されます。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.7

>シート「記入」で1件目を入力した時は Z4 は空白  > 2件目を入力すると Z4 Z5 は #VALUE になります。 回答の1部に誤りがありました。 ROW(G2) → ROW(G1) =IF(COUNTIF($AC$4:$AC$100,"?*")<ROW(G1),"",INDEX(AC$4:AC$100,MATCH(LARGE(($AD$4:$AD$100)+1-(ROW(A$4:A$100))/100,ROW(G1)),($AD$4:$AD$100)+1-(ROW(A$4:A$100))/100,0))) 上記は提示の数式を添削した結果です。 しかし、当方での検証ではシート「記入」に関しては参照していませんのでエラーの原因と別問題です。 尚、AC列、AD列の数式については今回の質問とは関連が無いものとして提示の画像からAC列とAD列の値を手入力しています。 AC列、AD列の検証も必要であればシート「記入」のG列の値を開示してください。

dorasuke
質問者

補足

AC列、AD列の検証も必要であればシート「記入」のG列の値を開示してください。 =IF(COUNTIF($C$2:C2,C2)=1,ROW(),"")

関連するQ&A

  • 別シートに勉強時間の集計結果を表示 仕組みが・・・

    お世話になっています 質問No.9097443 及び 質問No.9089695 でご指導いただきました。 勉強時間を集計したシートA列:科目 B列:開始日 C列:開始時刻 D列:終了日 E列:終了時刻 の記載があるsheet1には終了時刻から開始時刻を差し引いた作業時間を表示する列がない。 sheet1に差引の作業時間列を追加することなく、別のシートで各科目の勉強時間を集計する方法を教えてもらいました。 レクチャー頂いた内容は ************************************************************************************* Sheet3のA列とB列を作業列として使用して、Sheet2に科目ごとの勉強時間の合計を集計するものとします。 Sheet3のA2セルに次の関数を入力して下さい。 =IF(INDEX(Sheet1!$A:$A,ROW())="","",IF(COUNTIF(Sheet1!$A$1:INDEX(Sheet1!$A:$A,ROW()),INDEX(Sheet1!$A:$A,ROW()))=1,ROW(),"")) Sheet3のB2セルに次の関数を入力して下さい。 =IF(OR(INDEX(Sheet1!$B:$B,ROW())="",INDEX(Sheet1!$C:$C,ROW())="",INDEX(Sheet1!$D:$D,ROW())="",INDEX(Sheet1!$E:$E,ROW())=""),"",IF(ISERROR(1/(YEAR(INDEX(Sheet1!$B:$B,ROW()))>1904)/(INDEX(Sheet1!$C:$C,ROW())+0>=0)/(INDEX(Sheet1!$C:$C,ROW())+0<1)/(YEAR(INDEX(Sheet1!$D:$D,ROW()))>1904)/(INDEX(Sheet1!$E:$E,ROW())+0>=0)/(INDEX(Sheet1!$E:$E,ROW())+0<1)),"",IFERROR(TEXT(INDEX(Sheet1!$D:$D,ROW())+INDEX(Sheet1!$E:$E,ROW())-INDEX(Sheet1!$B:$B,ROW())-INDEX(Sheet1!$C:$C,ROW()),"[h]:m:s")+0,""))) Sheet2のA2セルに次の関数を入力して下さい。 =IF(ROWS(A$1:A2)>COUNT(Sheet3!$A:$A),"",INDEX(Sheet1!$A:$A,SMALL(Sheet3!$A:$A,ROWS(A$1:A2)))) Sheet2のB2セルに次の関数を入力して下さい。 =IF($A2="","",TEXT(SUMIF(Sheet1!$A:$A,$A2,Sheet3!$B:$B),"[h]:m:s")+0) ************************************************************************************* 実践できたものの、仕組みが複雑でわかりません。 Sheet3のA2では、IF関数の中で、COUNTIF関数が使われていますが、なんのためなのかわかりません。 Sheet3のB2セルには関数の中に">1904"と数値の1904より大きい値を指定する関数が組み込まれたいますが、なんのためか理解できていません。 Sheet2のA2では、「Sheet2のA1:A2がSheet3のA列より大きい」という条件に適合しなかった場合、最小値を求める計算をしていますが、何のために行っているのかわかりません。 Sheet2のB2では、A2に適合しなかった場合、Sheet1のA列から何かを何かの条件に一致したものを合計して時間表示していますが、よくわかりません。 簡単でいいので、解説をお願いできませんでしょうか? すみません、理解力が乏しいもので申し訳ありませんが、よろしくお願い致します。

  • 別シートに勉強時間の集計 これに集計期間を指定

    お世話になっています 質問No.9097443 質問No.9089695  質問No.9104294でご指導いただきました。 ◎希望条件 勉強時間を集計したシートA列:科目 B列:開始日 C列:開始時刻 D列:終了日 E列:終了時刻 の記載があるsheet1には終了時刻から開始時刻を差し引いた作業時間を表示する列がない。 sheet1に差引の作業時間列を追加することなく、別のシートで各科目の勉強時間を集計する方法を教えてもらいました。 ************************************************************************************* ◎レクチャー頂いた内容は Sheet3のA列とB列を作業列として使用して、Sheet2に科目ごとの勉強時間の合計を集計するものとします。 Sheet3のA2セルに次の関数を入力して下さい。 =IF(INDEX(Sheet1!$A:$A,ROW())="","",IF(COUNTIF(Sheet1!$A$1:INDEX(Sheet1!$A:$A,ROW()),INDEX(Sheet1!$A:$A,ROW()))=1,ROW(),"")) Sheet3のB2セルに次の関数を入力して下さい。 =IF(OR(INDEX(Sheet1!$B:$B,ROW())="",INDEX(Sheet1!$C:$C,ROW())="",INDEX(Sheet1!$D:$D,ROW())="",INDEX(Sheet1!$E:$E,ROW())=""),"",IF(ISERROR(1/(YEAR(INDEX(Sheet1!$B:$B,ROW()))>1904)/(INDEX(Sheet1!$C:$C,ROW())+0>=0)/(INDEX(Sheet1!$C:$C,ROW())+0<1)/(YEAR(INDEX(Sheet1!$D:$D,ROW()))>1904)/(INDEX(Sheet1!$E:$E,ROW())+0>=0)/(INDEX(Sheet1!$E:$E,ROW())+0<1)),"",IFERROR(TEXT(INDEX(Sheet1!$D:$D,ROW())+INDEX(Sheet1!$E:$E,ROW())-INDEX(Sheet1!$B:$B,ROW())-INDEX(Sheet1!$C:$C,ROW()),"[h]:m:s")+0,""))) Sheet2のA2セルに次の関数を入力して下さい。 =IF(ROWS(A$1:A2)>COUNT(Sheet3!$A:$A),"",INDEX(Sheet1!$A:$A,SMALL(Sheet3!$A:$A,ROWS(A$1:A2)))) Sheet2のB2セルに次の関数を入力して下さい。 =IF($A2="","",TEXT(SUMIF(Sheet1!$A:$A,$A2,Sheet3!$B:$B),"[h]:m:s")+0) ************************************************************************************* ◎☆今回は、このシートに集計期間を設定したいのですが、 可能でしょうか。  上記のやり方だと、Sheet1の全ての日付の項目を集計してしまいます。  そこで、  D3に集計指定期間開始日  E3に集計指定期間終了日 を設定するなどしてできないでしょうか。  sheet!1に指定期間日を設定しないやり方でしたら、Sheet2でもSheet3にでもどちらでもいいのですが。  よろしくお願いします。

  • 別シートに勉強時間の集計結果が表示されない

    こんばんは。 http://okwave.jp/qa/q9089695.html 質問No.9089695 上記前回質問でお世話になりました。 勉強時間を集計したSheet1には Sheet1にA列:科目 B列:開始日 C列:開始時刻 D列:終了日 E列:終了時刻 の記載があります。 終了時刻から開始時刻を差し引いた作業時間を表示する列がありません。 頂いたアドバイスとして、 *********************************************************************************************************** Sheet3のA列とB列を作業列として使用して、Sheet2に科目ごとの勉強時間の合計を集計するものとします。 Sheet3のA2セルに次の関数を入力して下さい。 =IF(INDEX(Sheet1!$A:$A,ROW())="","",IF(COUNTIF(Sheet1!$A$1:INDEX(Sheet1!$A:$A,ROW()),INDEX(Sheet1!$A:$A,ROW()))=1,ROW(),"")) Sheet3のB2セルに次の関数を入力して下さい。 =IF(COUNT(INDEX(Sheet1!$B:$E,ROW(),))=4,IF(ISERROR(1/(INDEX(Sheet1!$B:$B,ROW())=TEXT(INDEX(Sheet1!$B:$B,ROW()),"yyyy/m/d")/(INDEX(Sheet1!$B:$B,ROW())>=1))/(INDEX(Sheet1!$C:$C,ROW())=TEXT(INDEX(Sheet1!$C:$C,ROW()),"h:m:s")+0)/(INDEX(Sheet1!$D:$D,ROW())=TEXT(INDEX(Sheet1!$D:$D,ROW()),"yyyy/m/d")/(INDEX(Sheet1!$D:$D,ROW())>=1))/(INDEX(Sheet1!$E:$E,ROW())=TEXT(INDEX(Sheet1!$E:$E,ROW()),"h:m:s")+0)),"",IFERROR(TEXT(SUM(INDEX(Sheet1!$D:$E,ROW(),))-SUM(INDEX(Sheet1!$B:$C,ROW(),)),"[h]:m:s")+0,"")),"") Sheet3のA2~B2セルをコピーして、Sheet3のA列~B列の3行目以下に貼り付けて下さい。 Sheet2のA2セルに次の関数を入力して下さい。 =IF(ROWS(A$1:A2)>COUNT(Sheet3!$A:$A),"",INDEX(Sheet1!$A:$A,SMALL(Sheet3!$A:$A,ROWS(A$1:A2))))。 Sheet2のB2セルに次の関数を入力して下さい。 =IF($A2="","",TEXT(SUMIF(Sheet1!$A:$A,$A2,Sheet3!$B:$B),"[h]:m:s")+0) *********************************************************************************************************** 上記のアドバイスを実行しましたが、項目は表示されましたが、時間が表示されません。 時間が表示されない理由はどんなことが考えられますか? よろしくお願い致します。

  • ユーザー定義のコピーについて教えて下さい。

    (現在の作業) Sheet1!B2:F21に表があります。 その中で、個数を入力されている物だけを、Sheet1!I2:M21に書き込む。 と言うのを、関数を使って行っています。 「 I2 」=IF(COUNT($G$2:$G$21)<ROW(G1),"",INDEX($B$2:$B$21,SMALL($G$2:$G$21,ROW(G1)))) 「 J2 」==IF(COUNT($G$2:$G$21)<ROW(A1),"",INDEX($C$2:$C$21,SMALL($G$2:$G$21,ROW(A1)))) 「 K2 」=IF(COUNT($G$2:$G$21)<ROW(B1),"",INDEX($D$2:$D$21,SMALL($G$2:$G$21,ROW(B1)))) 「 L2 」=IF(COUNT($G$2:$G$21)<ROW(C1),"",INDEX($E$2:$E$21,SMALL($G$2:$G$21,ROW(C1)))) 「 M2 」==IF(COUNT($G$2:$G$21)<ROW(D1),"",INDEX($F$2:$F$21,SMALL($G$2:$G$21,ROW(D1)))) (行いたい事) D2:F21にユーザー定義をしているのを、K2:M21に同じ用にしたいです。 どういう風にすればいいか、教えて頂けませんか? よろしくお願いします。

  • エクセルでお聞きします。

    こちらのサイトの回答を参考に、セルに下記のような式が入れました。 他のシートや他のセルにも同様の式が入っているのですが割愛致しました。 通常Sheet1のB列は空白なんですが、もし何か文字が入っていたら その行に関してはこの式を反映させない方法を教えて下さい。 (Sheet2) B列 =IF(ROW(E1)>COUNT('Sheet1'!$E$4:$E$505),"",INDEX('Sheet1'!E$1:E$505, SMALL(INDEX(SUBSTITUTE(('Sheet1'!$E$4:$E$505<>"")*1,0,10^5)*ROW('Sheet1' !$E$4:$E$505),),ROW(E1)))) D列 =IF(ROW(C1)>COUNT('Sheet1'!$E$4:$E$506),"",INDEX('Sheet1'!C$1:C$505, SMALL(INDEX(SUBSTITUTE(('Sheet1'!$E$4:$E$505<>"")*1,0,10^5)*ROW('Sheet1' !$E$4:$E$505),),ROW(C1))))

  • エクセル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)) となっています。 これで問題点が明らかになるでしょうか? よろしくお願いいたします。

  • リストのデータを重複なしでランダムに抽出する

    シート1に下記のように14種類の名前リストがあります     A 1   A 2   B 3   C 4   D 5   E 6   F 7   G 8   H 9   I 10  J  11  K 12  L 13  M 14  N 上記の名前を下記のように別シートの数列おきの列(行は同一)に重複なしに行毎にランダムに抽出する事が関数で出来るでしょうか?(エクセルは2010です) ちなみに下記は一列おきのセルに抽出した例です   A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA 1 D   L   K    I    A   M   N    B   H   J    C    F    E   G 2 K   J   M   H    I   G   F    E   D    A    B   N   C    L 3 E   J   A    L   B   M    K   C   N    G    F   D    H   I どなたか教えていただける方がおりましたらよろしくお願いします。 という質問をさせていただき、mike gさんに下記のような回答をいただきました 1.Sheet1 の例えばセル C1 に式 =RAND() を入力して、此れを右に2列(注1参照)ドラッグ&ペースト 2.範囲 C1:E1 を下方にズズーッと(14行目まで)ドラッグ&ペースト 以下は別シート(Sheet2)における操作です。 3.セル A1 に次式を入力して、此れを右方にズズーッと(セル AA1 まで)ドラッグ&ペースト(注2参照)   =IF(MOD(COLUMN(),2)=1,INDEX(Sheet1!$A$1:$A$14,MATCH(SMALL(OFFSET(Sheet1!$C$1,,ROW()-1,14,),CEILING(COLUMN()/2,1)),OFFSET(Sheet1!$C$1,,ROW()-1,14,),0)),"") 4.1行目全体を下方にズズーッと(3行目まで)ドラッグ&ペースト 注1:「右に2列」は別シートの行数が3行の場合で、4行(5行)の場合は「右に3列(4列)」に読み替える。 注2:式中の 2 は「一列おき」の場合で、二列(三列)おきの場合は 2 を 3(4) に書き替える。 これで完璧に出来たのですが 実際にはSheet2のセルH6から15列おきに抽出したいのです。 15列おきは出来たのですが、セルH6から抽出を始めるにはどの部分を変更すれば良いのでしょうか? どなたか教えて頂ける方がおりましたらよろしくお願いします。

  • エクセル:別のシートへ抽出したデータをリンクさせたい。

    QNo.2970713の質問内容についてなのですが、 次のようなシートがあります。(シートAとします。)     A    B    C  … [1] 001  AAA [2] 002  BBB  あああ [3] 003  CCC [4] 004  DDD   [5] 005  EEE  いいい C列の空欄データは除外して、C列にデータが記入されているものだけ別のシートに(シートB)に行ごとリンクさせたいと考えています。 (この場合だと2列と5列です。) シートAには今後もデータが追加される想定で、新しいデータで当てはまるものは自動的にシートBに反映されるようにさせたいです。 この回答の中で、 ★SheetBに =IF(ROW(A1)>COUNTA(SheetA!$C:$C),"",INDEX(SheetA!A:A,SMALL(INDEX(SUBSTITUTE((SheetA!$C$1:$C$10<>"")*1,0,10^5)*ROW(SheetA!$C$1:$C$10),),ROW(A1)))) ★右と下にコピー あるのですが、C列がvlookuo等の数式が入っていると、#REF!となってしまします。 この#REF!を表示させない方法を教えて下さい。

  • A列が1から始まる連番で、C列を合計欄として結合

    添付画像のようにA列が1から始まる連番で、C列を合計欄として結合し、結合したC列に隣り合う、B列の合計を出す場合のC列の関数を =IF(INDEX($A:$A,ROW())="","",SUM(INDEX($B:$B,ROW()):INDEX($B:$B,IF(COUNTIF(INDEX($A:$A,ROW()+1):INDEX($A:$A,ROWS($A:$A)),"*?"),MATCH("*?",INDEX($A:$A,ROW()+1):INDEX($A:$A,ROWS($A:$A)),0)-1+ROW(),ROWS($A:$A))))) とした場合画像の左のように合計が合いません。 画像の右のようにC列を計算するには =IF(INDEX($A:$A,ROW())="","",SUM(INDEX($B:$B,ROW()):INDEX($B:$B,IF(COUNTIF(INDEX($A:$A,ROW()+1):INDEX($A:$A,ROWS($A:$A)),"*?"),MATCH("*?",INDEX($A:$A,ROW()+1):INDEX($A:$A,ROWS($A:$A)),0)-1+ROW(),ROWS($A:$A))))) をどのように修正すればいいのでしょうか?

  • 別シートに任意のセルを転記する方法について

    縦に6行ずつのデータがあり、これを横1行の別シートに転記する際に、 以前こちらで回答頂いた方法を応用したいと考えています。 =IF(INDEX(Sheet1!$Z:$Z,(ROW(A1)-1)*6+COLUMN(A1))=0,"",INDEX(Sheet1!$Z:$Z,(ROW(A1)-1)*6+COLUMN(A1))) アドバイスのとおり、上記の数式で見事に横にデータが転記できました。社員1人につき6行ずつのデータが縦にならんでおり、これを別の社員1人あたり1行で横に並んだデータにしたいというものでした。 1人目のデータは1行目を1列目に、2行目を2列目に・・・2人目のデータである7行目を1列目に、8行目を2列目に・・・3人目は13行目を1列目に・・・となります。 しかし、順次並べるのではなく、転記の必要にないデータを含むシートの任意のセルを選び、別シートの任意のセルへ転記する必要が生じたため、悩んで路頭に迷っております。。。 例えば、6行ずつのデータのうち、いつも3行目を別シートの5列目に。4行目は転記せずに、5行目を6列目に。また、6行目を7列目に転記せずに10列目に転記する。(8・9列目は、別データを入力するため空白にしたい) そして、社員2人目である7行目からは、上記と同じ規則で転記したい。 などというように、選んで転記する方法は何かありますでしょうか?? =INDEX(Sheet1!$Z:$Z,(ROW(B2)-ROW($B$2))*6+IF(COLUMN()=4,MOD(COLUMN(B2)-1,6)+1,MOD(COLUMN(B2)-1,7))) のようにしても上手くいきません。 何卒宜しく御願いいたします。

専門家に質問してみよう