グッドデザイン賞を受賞したウォーターサーバー >>

商品の受注入力をエクセルで管理したいのですが、商品には1商品1単価のものと、1商品5単価のものが存在します。商品・価格一覧は以下の通りです。実際の表は500行ほどあります。
(商品・価格一覧表)
code size P① P② P③ P④ P⑤
 1 S 20
 5 LL 1000 900 800 700 600

(受注枠)
code  数 size  -- P--  total
 1  5  S  20  *1  100
 5  3  LL  800  *2  2400

受注枠には、商品となるcode番号と 受注数量を入力すると一覧表からsizeと単価が引けるように作りました。
code5の商品は、注文する枚数に応じて、1枚なら1000円、2枚900円、3枚800円、4枚700円、5枚なら600円となるように設定したいと考えています。
受注枠のPの枠セル(*1)(*2)には、以下の式を作りました。

IF(K5="","",IF(J5<=3,VLOOKUP(J5,$B$4:$H$5,3),IF(AND(J5>=4,K5=1),VLOOKUP(J5,$B$4:$H$5,3),IF(AND(J5>=4,K5=2),VLOOKUP(J5,$B$4:$H$5,4),IF(AND(J5>=4,K5>=3),VLOOKUP(J5,$B$4:$H$5,5),IF(AND(J5>=4,K5>=5),VLOOKUP(J5,$B$4:$H$5,6),IF(AND(J5>=4,K5>=5),VLOOKUP(J5,$B$4:$H$5,7))))))))

code1の商品のように単価が1つのものは受注数がいくつでも対応しますが、code2の商品のように複数の単価を持つ商品は、上の式では3列目のP ③の800までしか対応してくれません。
受注枠の数量欄に 4 と入力しても5と入力しても800と表示されるだけです。

参考書によると、ifの使い方に問題があるのかと思いますがどうしても解決しません。
参考書片手に作成しましたがこの問題を解決していただけないかと質問に投稿させていただきました。
何卒解決の道筋を教えていただきたくお力をお借りします。宜しくお願い致します。

A 回答 (1件)

よく分からないのですが、こんなので参考になりますか。


K2セルに次の式が入っています。

【K2セル】=HLOOKUP(J2,A:G,MATCH(I2,A:A,0),TRUE)
「エクセル ifの使い方を教えて」の回答画像1
    • good
    • 0
この回答へのお礼

アドバイスを求めた内容を1週間ほどかけて頑張った甲斐も無くあきらめかけました。
実は同じような方法でもトライしたのですがうまく解決できませんでした。
アドバイスを求めて大正解でした。本当に気分もよく作りかけた受注表に再び取り掛かる意欲がわいてきました。
本当に感謝します。

お礼日時:2019/03/29 19:12

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

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

このQ&Aと関連する良く見られている質問

Qエクセル リストと完全一致するセルに色をつける

シート1のA列とB列に
aaa ccc
bbb ggg
ccc kkk
ddd ooo
と言うリストがあって、A1〜A4はAチーム、B1〜B4まではBチームと名前を付けています
シート2にAチームのリスト4個が続いているものがあればセルを赤、Bチームのリスト4個が続いているものがあればセルを黄色に塗りたいです
AチームとBチームの中には同じ品番がある時もあります
条件付き書式で設定は出来るでしょうか?

Aベストアンサー

(´・ω・`)
”○” の数を数えるんじゃないんだよなあ。

・・・本題・・・

条件付き書式ですよね。

シート2のリストの並び順は
 aaa
 ccc
 bbb
 ddd
では「Aチーム」と認識しないという事でよろしいでしょうか?
ならば、とても簡単です。

シート2の一覧において、

 判定するセル1
 判定するセル2
 判定するセル3
 色を付けるセル
 判定するセル4
 判定するセル5
 判定するセル6

という範囲について調べれば良いという事。

 判定するセル1
 判定するセル2
 判定するセル3
 色を付けるセル

 判定するセル2
 判定するセル3
 色を付けるセル
 判定するセル4

 判定するセル3
 色を付けるセル
 判定するセル4
 判定するセル5

 色を付けるセル
 判定するセル4
 判定するセル5
 判定するセル6

の4パターンについてそれぞれ調べれば良いだけ。

自分なら
 aaa-bbb-ccc-ddd
のようにシート1から文字列を作り、それが調べるセルで同じパターンになるかを調べます。
シート1はA5セルから、シート2はA11セルからデータが入力されているなら、

 シート1!A5 & シート1!A6 & シート1!A7 & シート1!A8 = A11 & A12 & A13 & A14
 シート1!A5 & シート1!A6 & シート1!A7 & シート1!A8 = A12 & A13 & A14 & A15
 シート1!A5 & シート1!A6 & シート1!A7 & シート1!A8 = A13 & A14 & A15 & A16
 シート1!A5 & シート1!A6 & シート1!A7 & シート1!A8 = A14 & A15 & A16 & A17

という条件になる。
この4つのうちの一つでも条件を満たせばセルに赤色を付ければいい。
「Bチーム」についても同様にすればいいので、
この場合、8つの条件式を設定することになります。

面倒でもこの考え方ができていないと、ちょっと条件が変わっただけで対処できずに終わります。
冒頭で「並び順」について書きましたが、並び順がシート1のリストの通りでなくとも色を付けたい場合でも、この考え方は必要ということです。

・・・
ちなみに厄介なのが、どちらのチームにも「ccc」がいるというところかな。
これが無ければ違う方法でシンプルにできるんですけどねえ。

(´・ω・`)
”○” の数を数えるんじゃないんだよなあ。

・・・本題・・・

条件付き書式ですよね。

シート2のリストの並び順は
 aaa
 ccc
 bbb
 ddd
では「Aチーム」と認識しないという事でよろしいでしょうか?
ならば、とても簡単です。

シート2の一覧において、

 判定するセル1
 判定するセル2
 判定するセル3
 色を付けるセル
 判定するセル4
 判定するセル5
 判定するセル6

という範囲について調べれば良いという事。

 判定するセル1
 判定するセル2
 判定するセル3
 色を付け...続きを読む

Q【関数】複数条件に応じてポイントをつけたい

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

条件によってポイント付与する数式を組みたいのですが
条件が複雑で、どのような関数を組めば良いか、関数の知識も乏しく頭を悩ませております。
詳しい方教えて頂けないでしょうか?

K列 担当者ID
L列 計画
M列 実績
N列 達成率
O列 達成額/未達額
P列 ポイント付与欄

上記のようなデータがあります。

下記条件で、O列「達成額/未達額」の降順にポイントを付与したいです。
その際、下記の条件でポイントを付与したいのです。

ポイント集計先
①黄色セル K5~K18:担当者ID
➁赤色セル K4:部門コード
※画像添付いたします。

ポイント付与条件別表
黄色セル E列:担当者ID ※上記①と紐づく
ピンクセル F列:担当者に紐づく主担当部門コード ※上記➁と紐づく
※補足へ画像添付いたします。

★条件★
・基本
O列
①「達成額/未達成額」が0以上なら降順に10Pからポイント付与
➁「達成額/未達成額」が0orマイナスならポイント付与せず
※ただし、マイナスでも実績があればポイント付与

上記、基本条件に加えて、下記条件も組み込みたいです。
①担当者ID+主担当部門コードが紐づけはO列に10PからポイントMAX付与
➁担当者ID+主担当部門コード以外だったら該当ポイントの1/2付与
かつ、「達成額/未達成額」が0orマイナスなら1/2のポイントの半分付与

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

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

条件によってポイント付与する数式を組みたいのですが
条件が複雑で、どのような関数を組めば良いか、関数の知識も乏しく頭を悩ませております。
詳しい方教えて頂けないでしょうか?

K列 担当者ID
L列 計画
M列 実績
N列 達成率
O列 達成額/未達額
P列 ポイント付与欄

上記のようなデータがあります。

下記条件で、O列「達成額/未達額」の降順にポイントを付与したいです。
その際、下記の条件でポイントを付与したいのです。

ポイント集計先
①黄色セル...続きを読む

Aベストアンサー

まず基本条件の方からいきます。
1.セルP5に 「 =IF($M5>0,MAX(10+1-RANK.AVG($O5,IF($M$5:$M$1000>0,$O$5:$O$1000,"")),0),"") 」を入力します。
2.必要なだけ下方向にコピーします。(完了)

*RANK.AVG関数で”達成額/未達成額”の順にランキング(1~)をつけ、11から差し引く、という方法をとります
*”実績”がマイナスのものはランキング付けそのものから除外するので、IF関数で検索対象の配列を絞り込みます
(IF関数に配列を入れたら答えも配列で返してくれるので、その絞り込んだ配列に対してRANK.AVR関数を使います。)
*マイナスのポイントは排除したいので、MAX関数でゼロと比較して正の値のみを採択します

追加条件込みの方は、以下です。
1.セルP5に 「 =IF($M5>0,MAX(10+1-RANK.AVG($O5,IF($M$5:$M$1000>0,$O$5:$O$1000,"")),0)*IF(VLOOKUP($K5,$E$3:$F$1000,2,FALSE)=$K$4,1,IF($O5>0,0.5,0.25)),"") 」を入力します。
2.必要なだけ下方向にコピーします。(完了)

*担当IDから担当部門コードの検索にはVLOOK関数を使います。VLOOK関数が正常に動作するには、担当IDに漏れがない事と番号順に並んでいる事が必要ですので、これ前提で考えて下さい。
*追加条件に準じ、ポイントを1倍したり、0.5倍したり、0.25倍したり、しました。

まず基本条件の方からいきます。
1.セルP5に 「 =IF($M5>0,MAX(10+1-RANK.AVG($O5,IF($M$5:$M$1000>0,$O$5:$O$1000,"")),0),"") 」を入力します。
2.必要なだけ下方向にコピーします。(完了)

*RANK.AVG関数で”達成額/未達成額”の順にランキング(1~)をつけ、11から差し引く、という方法をとります
*”実績”がマイナスのものはランキング付けそのものから除外するので、IF関数で検索対象の配列を絞り込みます
(IF関数に配列を入れたら答えも配列で返してくれるので、その絞り込んだ配列に対してRAN...続きを読む

QCSVデータ(Test.csv)に A1,B1 A1,B1 A1,C1 A2,B2 A2,B2 A3

CSVデータ(Test.csv)に
A1,B1
A1,B1
A1,C1
A2,B2
A2,B2
A3,B3
A3,B3
というデータが1万レコード入っていたとします。(A1~A100まで100種類)

本来は
A1のペアはB1
A2のペアはB2
A3のペアはB3
となるはずが、上記のように誤ってC1が混在していることに気づく手段はございますでしょうか。

Excelの機能、プログラムなどどんな方法でも構いませんので、Excelフィルタ機能で100回確認する以外の方法がございましたら教えて頂けないでしょうか。

Aベストアンサー

No.5です。

>A列とB列を結合(=A1&"_"&B1)したものを『データ→重複を削除』で重複を削除し、A1で重複しているものをcountifでカウントして2以上のものがおかしい行と判断できる気がしてきました。

具体的なデータがどのようになっているのか不明なので、
C列に A列とB列を連結したデータがいくつあるか?を表示するコードにしてみました。

Sub Sample2()
 Dim myDic As Object
 Dim i As Long, lastRow As Long
 Dim myStr As String
 Dim myR

  Set myDic = CreateObject("Scripting.Dictionary")
   lastRow = Cells(Rows.Count, "A").End(xlUp).Row
    myR = Range(Cells(1, "A"), Cells(lastRow, "C"))
     For i = 1 To UBound(myR, 1)
      myStr = myR(i, 1) & "_" & myR(i, 2)
       If Not myDic.exists(myStr) Then
        myDic.Add myStr, 1
       Else
        myDic(myStr) = myDic(myStr) + 1
       End If
     Next i
     For i = 1 To UBound(myR, 1)
      myStr = myR(i, 1) & "_" & myR(i, 2)
      myR(i, 3) = myDic(myStr)
     Next i
    Range(Cells(1, "A"), Cells(lastRow, "C")) = myR
   Set myDic = Nothing
   MsgBox "完了"
End Sub

これで重複がある場合はC列に2以上の数値が表示されます。m(_ _)m

No.5です。

>A列とB列を結合(=A1&"_"&B1)したものを『データ→重複を削除』で重複を削除し、A1で重複しているものをcountifでカウントして2以上のものがおかしい行と判断できる気がしてきました。

具体的なデータがどのようになっているのか不明なので、
C列に A列とB列を連結したデータがいくつあるか?を表示するコードにしてみました。

Sub Sample2()
 Dim myDic As Object
 Dim i As Long, lastRow As Long
 Dim myStr As String
 Dim myR

  Set myDic = CreateObject("Scripting.Dictionary")
 ...続きを読む

Q保存先フォルダとファイル名について

いつもお世話になっております。
保存をかける際にダイアログボックスを出したく、
またシートA1には保存先、B1にはファイル名を指定しておきたいのですが
どのようにすればよろしいでしょうか?
色々調べたのですが解決できず、アドレスどうぞよろしくお願いします。

ちなみにEXCEL2013を使用しています。

Sub CsvExportWithQuotation()
 Dim FileName As Variant
 Dim Rng As Range
 Dim LastCell As Range
 Dim c As Range
 Dim i As Long
 Dim strLine As String, fname As String, fpath As String

fpath = cells(1,1).value
fname = cells(1,2).value
 FileName = Application.GetSaveAsFilename( fpath & "¥" & fname,fileFilter:="CSVt Files (*.csv), *.csv")

保存先は指定出来るのですが、ファイル名が表示されません。
何卒よろしくお願い致します。

いつもお世話になっております。
保存をかける際にダイアログボックスを出したく、
またシートA1には保存先、B1にはファイル名を指定しておきたいのですが
どのようにすればよろしいでしょうか?
色々調べたのですが解決できず、アドレスどうぞよろしくお願いします。

ちなみにEXCEL2013を使用しています。

Sub CsvExportWithQuotation()
 Dim FileName As Variant
 Dim Rng As Range
 Dim LastCell As Range
 Dim c As Range
 Dim i As Long
 Dim strLine As String, fname As String, fp...続きを読む

Aベストアンサー

No1です。

>セルではなく直接書いてみたのですが
>ファイル名はFALSE.csv と表示がされました。
ご提示の通りの式を与えれば、そうなります。

第一引数をファイル名と解釈して評価しようとしますので、
> InitialFilename = "保存先&ファイル名"
 1)まず式をそのまま評価すると False(論理値)となり
 2)要求されているのは文字列なので、変換した"FALSE"を値として採用
 3)拡張子「.csv」が付け加えられて
 4)ダイアログのファイル名欄に「FALSE.csv」と表示
という処理がなされているものと思います。

>セルに関数も入っていないのに謎です
セルの値を参照していないのであれば、セルの状態がどうであるかは関係ないはずです。
(関係したら、その方がおかしい)

QエクセルでのIF関数について

エクセルでIF関数で
同じセルの中で、IF関数を使って、例えば、
セルの中味で、0を越えれば、あ
0未満なら、い
と表示したいのですが、できますでしょうか?
できるなら、その関数表示をお願いします。
今、作業中なので、できましたら早急に宜しくお願いします!
例えば、
=IF( $C3>0,"あ","い") ではなくて、C3=0 が い になるので、ダメ!!

Aベストアンサー

こんにちは

せっかく写真を添付なさっても、どこがC3セルなのかわからないですね。
(行番号と列番号が不明)

>0を越えれば、あ
0より大きければ「あ」(0は含まない)
>0未満なら、い
0より小さければ「い」(0は含まない)
ということになるので、0の場合にどうしたいのかが記されていません。

>C3=0 が い になるので、ダメ!!
ということから勝手に推測して『0以上なら「あ」』という条件に読み替えるとするなら
 =IF($C3>=0,"あ","い")

さらに、『C列が空白の場合は、「あ」と表示しない(空白表示)』という条件も付け加えるのなら
 =IF($C3="","",IF($C3>=0,"あ","い"))
とかでしょうか…

Qエクセルの使い方初心者です 数値が一定の数に満たないものを切り捨てて、残った数値の合計を出したいので

エクセルの使い方初心者です



数値が一定の数に満たないものを切り捨てて、残った数値の合計を出したいのですが最適な関数を教えてください

Aベストアンサー

こう言う事ですよね?

ファイル、
https://1drv.ms/x/s!AjviygfJDgV_3BbssbMqmfD5tQ8h

尚、
ファイルは 必ず、
1度 エクセルで、
開き、
ローカル保存してください、

ローカル保存で なければ、
意味が 無いです。


そうすれば、
閲覧も、編集も、
叶うものと 思います。

Qエクセルのデータ抽出方法を教えてください

下記のような表から、A列のコードをもとにして「D」列の「3」行目の100、200、300(ピンク色)のセルを参照したいのですが関数がわかりません。
別のシートに10000なら100、20000なら200と表示させたいです。
vlookupでは行が1行でないとできませんでした。

Aベストアンサー

以下でいかがですか。
H2 =INDEX(E2:E13,MATCH(G2,A2:A13,0)+1)

Q4142から653347と飛んでます。 これを4143からちゃんと並ぶにはどうすればいいでしょうか?

4142から653347と飛んでます。
これを4143からちゃんと並ぶにはどうすればいいでしょうか?

Aベストアンサー

これ、9から70に飛んでるよね。

①シート全体を選択
②どの行でもいいので右クリック
③再表示を選択

開いたかな?

Qお世話になっております エクセルで有給の管理をしたいのですが 数式がわかりません。ご教示お願いします

お世話になっております

エクセルで有給の管理をしたいのですが
数式がわかりません。ご教示お願いします。
当社の場合、年休は
一日年休、時間年休、半日年休(1日の半分の年休)の三種類があります。
(8時間拘束です)

一日年休は時間に換算すると8時間
残日数と残時間を足してすべて時間に換算する、まではわかるのですが、頭を悩ませているのが、半休と時間年休の表示をわけることです。

<例>
年休残日数が16日と1時間あるとします。
そこで、半日年休を取ったとします。
16日+1時間を時間に換算すると129時間です
そこから半日と考えて4時間をマイナスすると125時間となりますが、これを下記の数式に入れると

=INT(125/8)&"日"&MOD(125,8)&"時間"

15日5時間となりますが、実際は15日と半日と1時間です。
4時間年休を取ったすればその場合は、残は15日5時間でOKです。

どういう計算式を入れればこのとおり表示できるでしょうか。

悩んで禿げそうです。
どなたかお知恵をお貸し願います。
よろしくお願いします

_______このように表示したい_____________

年月日|1日単位|半日単位|時間単位 残
2月5日   0    1    0   15日半日1時間
2月7日   0    0    4   14日半日5時間
2月8日   0    1    0   14日5時間

お世話になっております

エクセルで有給の管理をしたいのですが
数式がわかりません。ご教示お願いします。
当社の場合、年休は
一日年休、時間年休、半日年休(1日の半分の年休)の三種類があります。
(8時間拘束です)

一日年休は時間に換算すると8時間
残日数と残時間を足してすべて時間に換算する、まではわかるのですが、頭を悩ませているのが、半休と時間年休の表示をわけることです。

<例>
年休残日数が16日と1時間あるとします。
そこで、半日年休を取ったとします。
16日+1時間を時間に換算すると...続きを読む

Aベストアンサー

有給休暇の全てを時間単位で管理して、
残時間に対する最後の表示だけを、日+時間の表示にすればよいと思います。
日=残時間÷8の商、時間=その余り、で表せます。

年間有給時間=年間有給日数×8時間、として、
日休暇=8時間
半休=4時間(午前、午後とも)
時間給=時間に切り上げの時間数
これを消化ごとに減じていけばよい、と思います。

QExcelで「令和」と表示されるのは5月1日にならないとだめですか?

「日本の新元号に関する Office の更新プログラム」というページ(下記)で、
「Windows と Office の更新プログラムを適用済みの場合でも、Windows 上で実行されている Office 製品は 2019 年 5 月 1 日に新元号が開始されるまで、新元号を表示しませんのでご注意ください。」
と書かれています。
https://support.microsoft.com/ja-jp/help/4478844/office-updates-for-new-japanese-era

今月4月中に、Excelのセルに来月5月以降の年月日を入力した場合に、自動で「令和」という元号を表示させることはできないのでしょうか。

もし、できるということであれば、「2019 年 5 月 1 日に新元号が開始されるまで、新元号を表示しません」とはどのような意味なのでしょうか。

Aベストアンサー

>こちらでは、「4月17日以降にOfficeも更新されれば「令和元年」と表示されると思います」と書かれているんですが

その方は、Microsoftの方ではないですし個人の予想ですよね?公式が出ているのにそれを持ち出してどうするんですか?

5/1より前に新しい元号を表示したい場合は数式や表示形式で限定的に表示させる方法を色々な方が考え付いていますよ。
検索すればたくさん出てきます。


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

人気Q&Aランキング