質問投稿でgooポイントが当たるキャンペーン実施中!!>>

いつもご教授頂きましてありがとうございます。

成績表を作成しております。
複数条件の数式について、知識不足な為ご教授願います。

K列に計画、L列に実績、N列に達成額が入っています。
O1には担当者別に担当エリアがあり、そのエリアで実績があれば
下記条件によってポイントを付与するといった表を作成しております。

※前提としてL列とN列が0or-除く。

1.検索した数字がO1と合致して、かつN1>0だったら60Pの100%→60P
2.検索した数字がO1と合致せず、かつN1<0だったら60Pの25 %→15P
ただし、K列が0でL列に実績(+)が発生した場合は、60Pの25%の更に半分のポイントにする
→15Pの半分なので、7.5P

3.検索した数字がO1と合致して、かつN1<0だったら60Pの75%→45P
4.検索した数字がO1と合致せず、かつN1>0だったら60Pの50%→30P

何卒ご教授願います。

質問者からの補足コメント

  • こちらにサンプル画像をアップいたしました。

    http://xfs.jp/7zsJA
    1hu23qcm

    ご確認いただけますと幸いです。
    よろしくお願いいたします。

    No.6の回答に寄せられた補足コメントです。 補足日時:2019/09/29 01:22
  • >1.J列のポイント付与とP列のポイント付与は、考え方が違うのでしょうか。
    >  P列はP3に1があるが、J列にはJ3のセルがない。
    >  P3の1は、どのような意味ですか。
    →こちらに関して、説明が足りておりませんでしたので
    こちらで補足させていただきます。

    P3の1は部門ごとに振り分けた番号になります。
    「★ID」シートのG列になります。
    申し訳ありません、「★ID」のG列を修正させてください。
    たなかさん→1
    やまださん→1
    なかおかさん→1
    ※G6、G7のたなかさん、やまださんの数字も1に修正させてください。

    なので、P3が1の部門の成績表になるので
    たなかさん、やまださん、なかおかさんは主担当部門コードが「1」で
    実績が発生しているので100%のポイントが付与されるという内容になります。

    わかりづらく申し訳ありません。

    No.8の回答に寄せられた補足コメントです。 補足日時:2019/09/29 18:26
  • 大変申し訳ありません。
    こちらが最新の条件となります。

    1.検索した数字がP3と合致して、かつO3>0だったら60Pの100%→60P
    2.検索した数字がP3と合致せず、かつO3><0だったら60Pの0%→0P
    3.検索した数字がP3と合致して、かつO3><0だったら60Pの75%→45P
    4.検索した数字がP3と合致せず、かつO3>>0だったら60Pの25%→15P
    ※ただし、計画L3が0、実績M3>0だったら、15Pのさらに50P(7.5P)とする。

    何度もお手数をおかけして申し訳ありません。

    No.9の回答に寄せられた補足コメントです。 補足日時:2019/09/29 19:02
  • お世話になっております。

    この度もお手数をおかけしております。
    申し訳ありません。

    >満額ポイントを取得するために、添付図の黄色のセルを指定しています。
    →ご教授頂きましてありがとうございます。
     何度も御手数をおかけして申し訳ありません。
     また、マクロ検証しましたところtatau99s様のご提示頂いたことをしっかり私が理解できておらず
     違う内容で伝わってしまっているようです。。。再度、要望を記載させて頂きます。
     大変申し訳ありません。

    No.17の回答に寄せられた補足コメントです。 補足日時:2019/10/02 11:30
  • №17の補足です。


    担当者ID➀ 2019.10月 E列:「★ID」リストのF列を検索して表示しています。
    その担当者IDとサンプルデータの「★ID」のG列主担当部門コードが2019.10月のP3と合致したらorしなかったら条件に基づくポイントをJ列に付与したい。

    担当者ID② 2019.10月 K列:「★ID」リストのE列を検索して表示しています。
    その担当者IDと「★ID」のF列主担当部門コードが2019.10月のP3と合致したらorしなかったら条件に基づくポイントをP列に付与したい。

    何度も申し訳ありません。。

    No.16の回答に寄せられた補足コメントです。 補足日時:2019/10/02 11:30
  • うーん・・・

    おはようございます。
    何度も申し訳ありません。

    変えない場合は、以下のような方法になります。
    ①E列を指定する代わりに、B列,C列,D列(拠点+部門+担当者)を使用して、★IDのG列の値を取得する。
    (指定するのはB列のみとし、C、DはB列の右隣の2つを採用する)

    ②K列を指定する代わりに、B列,C列,D列(拠点+部門+担当者)を使用して、★IDのF列の値を取得する。
    (指定するのはB列のみとし、C、DはB列の右隣の2つを採用する)。
    →本件、私の理解不足で申し訳ありません。
      ご提案頂きました件、私が提示した内容を一晩考えなおしてみました。
      その上で再度質問させてください。
      本件ですが★IDのE列の取得と言う項目がないのですが、それは①E列を指定する代わりに、②K列を指定する代わりに、という内容が
    そういうことなのでしょうか?

    No.19の回答に寄せられた補足コメントです。 補足日時:2019/10/03 09:09
  • ご教授頂きましてありがとうございます。

    さっそく申し訳ありません、質問させてください。

    貼付のようにエラーがでました。
    私の理解不足で申し訳ございませんが、ご教授願います。

    また、F2の設定ですが2019.10月のシートのF2に設定ということでよろしいでしょうか?

    何度も申し訳ありませんが、よろしくお願いいたします。

    「複数条件の数式を組みたい」の補足画像7
    No.26の回答に寄せられた補足コメントです。 補足日時:2019/10/03 13:51

A 回答 (36件中1~10件)

>今回ご教授頂いたマクロを見直し、また不明点ありましたら質問させて頂いてもよろしいでしょうか?


>また、修正等ありましたらお願いするかと思います。
>その際は、恐れ入りますが再度ご教授頂けますと幸いです。

了解しました。
不明点、想定される機能拡張の方法等について、あなたのほうでまとめて、質問があれば行ってください。
その為、しばらくはこのスレッドを閉じないでください。
    • good
    • 1
この回答へのお礼

tatsu99様

その節は大変お世話になりました。
追加でご教授頂きたく、ご連絡させて頂きました。

検索値が合致した際のポイント付与についてですが
60Pからとしておりましたが、ある主担当部門コードだけ
60Pと30Pとポイントを分けて付与したい場合、どのようにすればよろしいでしょうか?

何度も申し訳ありませんが、何卒ご教授頂けますと幸いです。

お礼日時:2019/10/23 15:20

下記にアップしました。


https://ideone.com/UOoUBd
    • good
    • 1
この回答へのお礼

助かりました

tatsu99様

お世話になっております。

無事、検証完了いたしました。
この度もご教授頂きまして本当にありがとうございます。
また、大変お手数をおかけして申し訳ありませんでした。

今回ご教授頂いたマクロを見直し、また不明点ありましたら質問させて頂いてもよろしいでしょうか?
また、修正等ありましたらお願いするかと思います。
その際は、恐れ入りますが再度ご教授頂けますと幸いです。

お忙しい中、ありがとうございました。

お礼日時:2019/10/04 14:32

>恐れ入りますが、ケース3へ下記条件追加頂くことは可能でしょうか?


>P3に一致
>O5<0、L5>0、M5>0

了解です。添付図の黄色の個所を追加します。確認ください。


>2019.10月シートのB、C、D列に参照する数式が入っており、0表示になっていたのですが
>それを削除しましたらマクロがエラーでず、完了となりました。
>その0がエラーの原因だったと考えます。
このエラーが発生したとき、マクロを止めてますが、このままでよろしいですか。
もし、「B、C、D列に参照する数式が入っており、0表示」になるケースがあって、
それが設定間違いでないのなら、処理を継続するようにすることは可能です。
(0表示になる状況は私はわかりませんが例えば、担当者がやめてしまって、★IDシートにない場合等)
その場合は、
①エラーメッセージを出すのか出さないのか。
②ポイントは0でよいの、それともほかの値か(ー1等)
について、提示ください。
「複数条件の数式を組みたい」の回答画像34
    • good
    • 1
この回答へのお礼

お世話になっております。

以下、回答させて頂きます。


>了解です。添付図の黄色の個所を追加します。確認ください。
→確認いたしました。そちらで追加願います。

>このエラーが発生したとき、マクロを止めてますが、このままでよろしいですか。
>もし、「B、C、D列に参照する数式が入っており、0表示」になるケースがあって、
>それが設定間違いでないのなら、処理を継続するようにすることは可能です。
> (0表示になる状況は私はわかりませんが例えば、担当者がやめてしまって、★IDシートにない場合等)
>その場合は、
>①エラーメッセージを出すのか出さないのか。
>②ポイントは0でよいの、それともほかの値か(ー1等)
>について、提示ください。
→仰る通り、★IDシートにない場合、0表示になってしまいます。
 ➀もし可能なのでしたら処理を継続しつつ、エラーメッセージも表示させることは可能でしょうか?
 ➁その0表示の担当はポイント0で大丈夫です。

何度も申し訳ございませんが、何卒、よろしくお願いいたします。

お礼日時:2019/10/04 11:32

再確認のためポイント付与の表を提示します。

「複数条件の数式を組みたい」の回答画像33
    • good
    • 1
この回答へのお礼

お世話になっております。

条件提示頂きましてありがとうございます。

ポイントの条件について、再度確認いたしました。

> 「達成/未達成額がマイナス以降のポイントが0で計算されてしまいます。」とのことですが、
> 提示されたファイルの48行目(順位44 J48,P48)と51行目(順位47 J51,P51)のことでしょうか。
>この場合、この担当者(このシートは空白なので不明ですが)の★IDシートのG列の値が1以外かと思われます。
>つまり、Case7に該当するため、0になります。
→説明不足で申し訳ありません。
 順位44、47はケース7で問題ございません。
 順位45の件ですが、条件が足りなかったことに気が付きました。
 恐れ入りますが、ケース3へ下記条件追加頂くことは可能でしょうか?
 P3に一致
 O5<0、L5>0、M5>0

何卒、よろしくお願いいたします。

お礼日時:2019/10/04 09:47

>tatsu99様のファイルに当てはめると問題なくマクロが動きました。


>原因はE列、F列に担当者IDがそのまま入っていた為でした。

「★ID」シートのE列、F列でしょうか。それなら、その列はマクロでは参照していません。
何が入っていても関係ありません。マクロが参照するのは、「★ID」シートのB列,C列,D列,G列のみです。
上記が原因ではないと考えます。

もし、「2019.10月」シートのE列、F列だとしたら、E列は無関係ですが、F列は計画の値なので、担当者IDが入っていてはだめです。
(でもF列に担当者IDを入れることはないと思うので、これではないですよね)


>①E列(K列も同様)には主担当部門コード「1」が入っていることが前提でしょうか?
> F2に主担当部門コード「1」のみ設定で、E列、K列の担当者IDはそのまま表示するという認識でした。
>※別途、お伝えしておりましたが個人集計をする関係でE列、K列には担当者IDをそれぞれ表示しておきたいのです。。。

このE列は、「2019.10月」シートのE列でしょうか。
マクロでは、この列を参照しませんので、何が入っていても関知しません。(K列も同様です)
E列、K列には担当者IDをそれぞれ表示しておいて問題ありません。

J列、P列のポイント算出時、マクロで参照する列は、以下になります。(全て「2019.10月」シートの列です)
Call add_point("F2","P3","B","F","G","I","J") 'J列のポイント
Call add_point("F2","P3","B","L","M","O","P") 'P列のポイント
        ① ②  ③ ④ ⑤ ⑥ ⑦
①: 主担当部門のセル位置 (ポイント取得用)(F2=1,2,3のいずれか)
②: 担当者主担当部門のセル位置(③の部門(拠点+部署+担当者)で指定された担当者に該当する★IDシートのG列と比較するための値)
③: 部門(拠点+部署+担当者)の開始列・・・この例ではB列を指定
④: 計画列
⑤: 実績列
⑥:達成/未達成列
⑦: ポイント付与列


>②ポイント算出についてですが、私がお伝えしている想定条件が恐らく間違っているのだと思いますが
>こちらが希望したポイントになりません。。
>達成/未達成額がプラスと計画、実績が0の場合は条件通り計算されるのですが
>達成/未達成額がマイナス以降のポイントが0で計算されてしまいます。

「達成/未達成額がマイナス以降のポイントが0で計算されてしまいます。」とのことですが、
提示されたファイルの48行目(順位44 J48,P48)と51行目(順位47 J51,P51)のことでしょうか。
この場合、この担当者(このシートは空白なので不明ですが)の★IDシートのG列の値が1以外かと思われます。
つまり、Case7に該当するため、0になります。
「複数条件の数式を組みたい」の回答画像32
    • good
    • 1
この回答へのお礼

おはようございます。

ご教授頂きましてありがとうございます。

私が提示した件はすべて影響ないとのことで再度確認いたしました。
2019.10月シートのB、C、D列に参照する数式が入っており、0表示になっていたのですが
それを削除しましたらマクロがエラーでず、完了となりました。
その0がエラーの原因だったと考えます。

何度も御手数をおかけして申し訳ございませんでした。

お礼日時:2019/10/04 09:40

画像を見ると


★IDシートに未登録<0|0|0>のように見えますが、
実際は、なんと表示されていますか。

このままでは埒があかないので、エラーが発生するファイルをどこかのURLにアップしていただけませんでしょうか。
    • good
    • 1

F2に主担当部門コードである1,2,3を入力しましたがやはり★IDリストに該当なしとのエラーが出てしまいます。


下記にUPしましたのでこちらで確認していただけませんでしょうか。
パスワード:goo
http://firestorage.jp/download/6d9bf29586043700b …

これから出かけます。戻りは18~19時ごろになります。
    • good
    • 1
この回答へのお礼

うーん・・・

おはようございます。

ご返信が遅くなり、大変申し訳ありません。

tatsu99様のサンプルファイルを共有いただきましてありがとうございます。
確認いたしました。

tatsu99様のファイルに当てはめると問題なくマクロが動きました。
原因はE列、F列に担当者IDがそのまま入っていた為でした。

その上で以下、再度質問させてください。
理解できておらず、とんちんかんな質問をしておりましたら申し訳ありません。

①E列(K列も同様)には主担当部門コード「1」が入っていることが前提でしょうか?
 F2に主担当部門コード「1」のみ設定で、E列、K列の担当者IDはそのまま表示するという認識でした。
※別途、お伝えしておりましたが個人集計をする関係でE列、K列には担当者IDをそれぞれ表示しておきたいのです。。。

②ポイント算出についてですが、私がお伝えしている想定条件が恐らく間違っているのだと思いますが
こちらが希望したポイントになりません。。
達成/未達成額がプラスと計画、実績が0の場合は条件通り計算されるのですが
達成/未達成額がマイナス以降のポイントが0で計算されてしまいます。

こちらへアップいたしました。ご確認いただけますと幸いです。

http://xfs.jp/Lk7cW
ur858dpc

何度も申し訳ありませんが、何卒ご教授願います。

お礼日時:2019/10/04 06:52

F2は添付図の青線で囲んだ値です。

結合セルなのでF2になります。
①が指定されていますが、1,2,3を指定することになっています。
(No16のお礼で所属名の①②③でなく、主担当部門コードである1,2,3にしたいとあなたからのリクエストがありそうしました。)
この値で、割り付けるポイントを決定します。(No17の画像参照)
このシートの通りなら、★条件シートの主担当部門コードは1,2,3のいずれかなので、F2には1,2,3のいずれかでなければいけません。
「複数条件の数式を組みたい」の回答画像29
    • good
    • 1
この回答へのお礼

うーん・・・

何度も申し訳ありません。

>F2は添付図の青線で囲んだ値です。結合セルなのでF2になります。
>①が指定されていますが、1,2,3を指定することになっています。
> (No16のお礼で所属名の①②③でなく、主担当部門コードである1,2,3にしたいとあなたからのリクエストがありそうしました。)
>この値で、割り付けるポイントを決定します。(No17の画像参照)
>このシートの通りなら、★条件シートの主担当部門コードは1,2,3のいずれかなので、F2には1,2,3のいずれかでなければいけません。
→こちらからお願いしましたのに申し訳ありません。
 確かにこちらで指定させて頂きました。失礼いたしました。
 F2に主担当部門コードである1,2,3を入力しましたがやはり★IDリストに該当なしとのエラーが出てしまいます。

お礼日時:2019/10/03 15:40

★IDシートに未登録が出たとき、どのポイント列でエラーが出たかをみたいなら


以下のようにしてください。
If dicT.exists(key) = False Then
MsgBox ("★IDシートに未登録<" & key & ">")
MsgBox ("算出ポイント列=" & point_col)
Application.Calculation = xlCalculationAutomatic
End
End If

MsgBox ("算出ポイント列=" & point_col)が追加した行です。

同様に「★条件シートのポイント取得エラー」が出た場合も、
If IsError(mpoint) Then
MsgBox ("★条件シートのポイント取得エラー:主担当部門<" & mainbm_val & ">")
MsgBox ("算出ポイント列=" & point_col)
Application.Calculation = xlCalculationAutomatic
End
End If

として、 MsgBox ("算出ポイント列=" & point_col)を追加しておくと
エラー時のポイントの列が判ります。
    • good
    • 1
この回答へのお礼

ご教授頂きましてありがとうございます。

こちらを追加したところ、先ほどのエラーと「ポイント算出列:J」と表示されます。

そもそも理解できていないかもしれないのですが
F2は算出する開始のセルという認識でよろしいでしょうか?
理解不足でしたら申し訳ありません。

お礼日時:2019/10/03 15:13

このエラーが出たのは、私が最初にサンプルで提示した、以下の2行のでですか。

それとも、あなたが追加した行ですか。
Call add_point("F2", "P3", "B", "F", "G", "I", "J") 'J列のポイント・・・・・①
Call add_point("F2", "P3", "B", "L", "M", "O", "P") 'P列のポイント・・・・②
この行のみにして、ほかの行は、一時コメントアウトして、どうなるか確認していただけませんか。

>また、F2の設定ですが2019.10月のシートのF2に設定ということでよろしいでしょうか?
はい、あってますが、ポイント算出行が、AF行より右側になったらAF2を指定してください。

エラーは、本来、★IDシートに未登録<A支店|一課|たなか>
のように出力されます。意味は、この担当者が★IDシートに登録されていないという意味です。
画像をみると、担当者の名前らしきものが、でていませんので、列の指定が誤っているかと、思われます。
あなたが、実際に追加した行の内容をここに提示していただけますか。
    • good
    • 1
この回答へのお礼

>このエラーが出たのは、私が最初にサンプルで提示した、以下の2行のでですか。それとも、あなたが追加した行ですか。
→追加はしておりませんので、そのままです。

> >また、F2の設定ですが2019.10月のシートのF2に設定ということでよろしいでしょうか?
>はい、あってますが、ポイント算出行が、AF行より右側になったらAF2を指定してください。
→ポイント算出行がAF行より右側になったら。。の意味なのですが
 申し訳ありません、理解不足でよくわからないのです。。
 再度ご教授頂けませんでしょうか?

>エラーは、本来、★IDシートに未登録<A支店|一課|たなか>
>のように出力されます。意味は、この担当者が★IDシートに登録されていないという意味です。
→該当の人は★IDにいます。
 B列:A支店 C列:一課 D列:たなか

他に何が原因として考えられますでしょうか?

お礼日時:2019/10/03 15:10
1  2  3  4 次の回答→

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング