質問があります
シート1のI列O列の値(データは500件程度)に応じて、シート2のE3 に判定結果を表示するセル式を作成しようとしています。まずI列の値でE3を空白表示するか決めます。その後O列の値が
-40より小さかったら24、
-35より小さかったら21、
-30より小さかったら18
の調子で5増えるごとに3の倍数で値が減っていき0以上なら0とする、セル式を作成したいです。
以下の式を作成しましたが、文章で記述したとおりに動いてくれません
(特に5<O<0→0のあたり)、この記述に何か問題がありますでしょうか?
=IF('シート1'!I:I=0,“ “, ROUNDUP(シート1!O:O/-5,0)*3)
----------------------------------------------------------------------
I=0 →“ “
I=0でなければOの値で判定
0=>O→0
-5<O<0→0
-10<O<-5→3
-15<O<-10→6
-20<O<-15→9
-25<O<-20→12
-30<O<-25→15
-35<O<-30→18
-40<O<-35→21
O<-40 →24
-------------------------------------------------------------------
No.6ベストアンサー
- 回答日時:
こちらの質問でNo.2の回答を書いた者です。
新しく質問を投稿しなおすのであれば、前の質問は締め切ってください。
>I列とO列は500件程度のデータが入っているんですよね。
>シート2のE3に判定結果とおっしゃいますが、その判定とは500件のデータ1件1件に対して個別に判定を行うのか、500件すべての合計や平均などから判定を行うのかがまずわかりません。
と書いたのですが、今回の質問を見てもその点は明確ではありませんね。
>=IF('シート1'!I:I=0,“ “, ROUNDUP(シート1!O:O/-5,0)*3)
このような式をE3に入力した場合、一見I列やO列全体を参照する式のようにみえますが、実際には式が入っているセルと同じ行の値、つまりI3とO3しか参照しません。
思うような結果が得られていない原因は、そのあたりにある可能性もあります。
それと他の方も指摘されていますが、
・Oの値がちょうど-5のときは0なのか3なのか?
・Oの値がちょうど-10のときは3なのか6なのか?
など、Oが範囲の境目ちょうどの値の場合にどちらになるかが不明瞭です。
こういう場合は、片方を<ではなく≦で表していただいた方が明確になります。
OKWAVEで質問したものが、こちらにも表示されたようですね。申し訳ありません
500件のデータ(-40から50までの値がランダムに入っている)1件1件に対して個別に判定を行います
本来同一シート状でOI列の値に応じて、判定結果をR列に表示させたかったのです。
ところが、OI列の値で判定する前に、まずC列(1から14の値がランダムに)の値で判定するために、シートを2つ使うという複雑なことになっていました。
2つの条件に対し、500件のデータ一つ一つを突合させるやり方、また不等号の境界線を明確にさせる
やりたいことが整理されていません
ご指摘感謝します。
No.7
- 回答日時:
セルの値の範囲ごとに一定の値を返したい場合は、検索関数が使いやすいと思います。
検索関数については参考URLをご覧ください。
以下、LOOKUP関数を使った方法になります。
シートを一つ追加します。(名前を「シート3」とします)
このシート3のA1:B8に、以下のデータを入れます。
A1に-40、B1に21
A2に-35、B2に18
A3に-30、B3に15
A4に-25、B4に12
A5に-20、B5に9
A6に-15、B5に6
A7に-10、B7に3
A8に-5、B8に0
E3の式は
=IF(シート1!I:I=0,"", IF(シート1!O:O<-40,24,LOOKUP(シート1!O:O,シート3!A:A,シート3!B:B)))
となります。
LOOKUP関数はリストから検索値を昇順に見ていくため、リストの最初の値(この場合はA1セルの値)より小さい値が来ると#N/Aエラーを返します。
ですから、O列の値が-40より小さい場合は24を返し、それ以外の場合はLOOKUP関数でシート3のリストを昇順に見て該当する値を返す、という式にしています。
この場合、O列の値が-5より大きい場合はすべて0を返します。
参考URL:http://www.eurus.dti.ne.jp/yoneyama/Excel/kansu/ …
複数のシートを使うこと、Lookup関数を使うとよいことはわかってきました。整理してもう少しシンプルにしていきます。ご教授感謝します。
No.5
- 回答日時:
I列、O列の値の何を対象とするんでしょうか。
500件程度有る列の話しでありながら結果をE3セルと指定しているので、何をしたいのか良く判りません。
・同じ行のI列、O列が対象ですか?(E3セルならI3、O3)
・O列の合計値または最小値、最大値を見れば良いのですか?
前者でしたら↓こんな感じです。
=IF(シート1!I3="","",-3*ROUNDDOWN(MAX(-40,シート1!O3)/5,0)*(シート1!O3<0))
-5、-10丁度などの時にどうするのか不明でしたので-35<=O<-40 で21となるようにしました。
あと、カテゴリの見直しもお勧めします。
同じ行のI列、O列が対象です。
本来この話はC列とOI列2つの条件に対して500件のデータ1件1件、個別に突合させ、判定結果をR列に表示させるというものだったのでした。
それを部分的に切り取ったため、また一つのシートで処理しきれず、2つのシートを使おうとしたために、このように他者にとって意味不明な質問となってしまいました。
まずやりたいことを明確にしたいと思います。
ご指摘感謝します。
No.4
- 回答日時:
難しく考えてしまったようですね。
=IF(Sheet1!I:I=0,"",IF(SUM(Sheet1!I$1:I$1000)<=0,IF(SUM(Sheet1!I$1:I$1000)<-40,24,-1*ROUNDDOWN((INT(SUM(Sheet1!I$1:I$1000))+1)/5,0)*3),""))
No.3
- 回答日時:
シート2のE3セルには次の式を入力してはどうでしょう。
=IF(SUMPRODUCT((Sheet1!I$1:I$1000<>"")*(Sheet1!O$1:O$1000))<=0,IF(SUMPRODUCT((Sheet1!I$1:I$1000<>"")*(Sheet1!O$1:O$1000))<-40,24,-1*ROUNDDOWN((INT(SUMPRODUCT((Sheet1!I$1:I$1000<>"")*(Sheet1!O$1:O$1000)))+1)/5,0)*3),"")
なお、-40より小さかったら24の意味は-41になって24で、-40では21という意味になりますがそれでよいのですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) エクセル VBA セルの結合 2 2022/09/07 11:48
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
- Excel(エクセル) Excelで、別シートの表のステータスに伴った動的な自動転記をしたいです。 2 2023/06/14 15:56
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onedrive にexcelファイルをア...
-
エクセルに張り付けた写真のフ...
-
VB.NET Excelを読み込んでDataT...
-
Windows10にデュアルブートでXP...
-
C#からvbsを実行したい
-
【VB.NET】App.configにファイ...
-
バッチで当日日付で作成される...
-
VBAでPDFを作成する際、同じ名...
-
【VB.NET】for each文からのINS...
-
バッチファイルで電卓作ったの...
-
【VB.NET】Excelの最終行までの...
-
aspxをhtmlに変換する方法について
-
vba 空のデータをSplitする時の...
-
ASP.NetでWebアプリ開発の経験...
-
Wi-Fiのパスワードが指定なしと...
-
ffftpでファイル取得が0バイト...
-
マイクロソフトのビルゲイツさ...
-
指定番号から始まる連番フォル...
-
離れた事務所間でLAN
-
Excelでボタン(フォームコント...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルに張り付けた写真のフ...
-
onedrive にexcelファイルをア...
-
【VB.NET】App.configにファイ...
-
VB.NET Excelを読み込んでDataT...
-
キヤノン アソビカメラ iNSPiC ...
-
Windows10にデュアルブートでXP...
-
VBAでPDFを作成する際、同じ名...
-
phpのファイルがブラウザで開か...
-
【VB.NET】Excelの最終行までの...
-
ffftpでファイル取得が0バイト...
-
Excelでボタン(フォームコント...
-
vba 空のデータをSplitする時の...
-
VB.NETでMSComm が追加できず?
-
C#からvbsを実行したい
-
aspxをhtmlに変換する方法について
-
asp.netにてgridviewの列を動的...
-
連想配列を配列に格納したいで...
-
Wi-Fiのパスワードが指定なしと...
-
VBAのRegExpで後方一致/不一致...
-
”KINGSOFT WPSのVBエディタ画面...
おすすめ情報