前レコードを参照するには

このQ&Aのポイント
  • コードに99が入っている最新フラグがたっているレコードの前の履歴のレコードを別シートに表示する方法について教えてください。
  • 早急に教えていただきたいですが、下記のレコードについて前の履歴のレコードを別シートに表示するための関数を教えてください。
  • 質問ですが、コードに99が入っている最新フラグがたっているレコードの前の履歴のレコードを別シートに表示させるにはどのような関数を使用すればよいですか?
回答を見る
  • ベストアンサー

前レコードを参照するには

お世話になります。 早急に教えていただきたいのですが例えば下記のようなレコードの場合ですが     A     B     C      D     E 1  No.    履歴  最新フラグ  商品   コード 2 1001    1     0     りんご    99    3 1001    2     0     りんご    99 4 1001    3     1     りんご    99 コードに99が入っているもので最新フラグがたっているレコードの前の履歴のレコードを別シートに表示させていきたいのですがどのように関数を組めばよいのかわかりません。 ご教授くださいますようお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

例データ Sheet1 A1:F8  H列は作業列 1 No. 履歴 最新フラグ 商品 コード H列 2 1001 1 0 りんご 99 3 1001 2 0 りんご 99 4 1001 3 1 りんご 99 1 5 1002 1 0 みかん 30 6 1002 2 1 みかん 30 2 7 1003 1 0 かぼちゃ 99 8 1003 2 1 かぼちゃ 99 3 H列H2の式は =IF(D2=0,"",MAX($H$1:H1)+1) D列で1の行に連番を振っている。 ーーー Sheet2 結果 A2:F4 3 1001 2 0 りんご 99 5 1002 1 0 みかん 30 7 1003 1 0 かぼちゃ 99 A2の式は =INDEX(Sheet1!$A$1:$H$10,MATCH(ROW()-1,Sheet1!$H$1:$H$10,0)-1,COLUMN()) 前の行ということでー1が入っている。 F2まで横方向に式複写 A2:F2の式をA4:F4まで式複写。 ーー Imogasi方式(Googleで照会すれば同じような方法の応用が多数出る) 式の複写を多数行にしすぎるとSheet2の第5行以下の#N/Aの表示が出るが、それを防ぐにはSheet1のH列のMAXよりRow()-1が超えたら空白を返すようにする。 I関数をかぶせる。

heavycrewz
質問者

お礼

大変遅くなりました。 無事うまくできました。 ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

この質問の表現は、独りよがりではないか。 >前の履歴のレコード の意味がはっきりしない。質問例では>最新フラグ が1なのは第4行目だが セルの値が1はC列では1行しかないのか?。 第4行の履歴は3なので「前」は3-1の2で、それをB列で探せば良いか。 B列は飛んだ番号は振られて無いのか? ーー それらを、やさしいほうに勝手に解釈して 例データ A-E列 No. 履歴 最新フラグ 商品 コード 1001 1 0 りんご 99 1001 2 0 りんご 99 1001 3 1 りんご 99 例えばA8に INDEX($A$1:$E$4,MATCH(INDEX($A$1:$E$4,MATCH(1,$C$1:$C$4,0),2)-1,$B$1:$B$4,0),COLUMN()) 右方向に式を複写で 結果 A-E列 1001 2 0 りんご 99 こんなので良いのか。

heavycrewz
質問者

補足

回答ありがとうございます。 表現があいまいで申し訳ありません。 解釈はおっしゃるとおりです。 追記しますと     A     B     C      D     E 1  No.    履歴  最新フラグ  商品   コード 2 1001    1     0     りんご    99    3 1001    2     0     りんご    99 4 1001    3     1     りんご    99 5 1002    1     0     みかん    30 6 1002    2     1     みかん    30 7 1003    1     0     かぼちゃ   99 8 1003    2     1     かぼちゃ   99 というようにレコードが入ってきております。 これを先ほどの条件で抽出が可能でしょうか?

関連するQ&A

  • 値によって参照先を変えたい

    図のように、商品の種類ごとに生産者が記載されているマスタデータが複数あります。 検索値をコードとしながら、商品によって、参照するマスタを変えながら 生産者をそれぞれのマスタから引っ張ってくることはできるでしょうか。 商品がりんごなら、シート名「りんご生産者」からコードを検索値として生産者を表示。 商品がみかんなら、シート名「みかん生産者」からコードを検索値として生産者を表示。 という感じです。 どなたか助けてください。

  • Excel2003の条件付き書式について

    お世話になります。 条件付書式で下記のようなことが可能か、可能であれば設定方法をご教授お願いします。 【シート1】(単価リスト)※単価の昇順で並べ替えています。    A     B     C       D    E 1 レベル  単価  カテゴリー  商品名  在庫 2   1     5      AAA     りんご   ● 3   2     7      BBB     みかん 4   3     8     CCC     いちご 5   2     8     DDD     か き   【シート2】(各商品に必要な材料表)※材料名の昇順で並べ替えされています。     A       B     C 1 カテゴリー  商品名   材料 2  BBB     みかん  オレンジ 3  DDD     か き   オレンジ 4  CCC     いちご   赤 3  AAA     りんご    赤  4  BBB     みかん   黄 5  AAA     りんご    黒 6  AAA     りんご    白  上記のような同じBOOK内の2枚のシートで商品名をキーとして 【シート1】のE列「在庫」に「●」が入っている商品の場合 【シート2】の商品名セルが塗りつぶされるようにしたいのです。 【シート2】には、1つの商品に対して必要な材料すべてが行を変えて記入されているため、同じ商品名が複数あります。 たとえばりんごの場合 【シート1】のE列「在庫」に「●」が入っているので【シート2】の商品名「りんご」 のセル(B3、B5、B6)はすべて塗りつぶされる。 (他の商品は「在庫」に「●」が入っていないので【シート2】の商品名セルは塗りつぶしなしのまま) 条件付き書式の「数式で」で検索する関数と「●」が入っている場合は FLASEとなるようIF関数の組み合わせを条件1と条件2に指定して試してみたのですが 上手くいきませんでした。 説明が足りなかったり、分かりにくければ補足させていただきますので宜しくお願いします。

  • ACCESSでのひとつ前レコードの求め方について

    ACCESS2000にてDLOOKUP関数とDMAX関数を用いて一つ前のレコード内容フィールドを クエリにて作成しようとしております。下記の式を設定しクエリを実行すると一つ前の レコード情報(前レコードの ”終了時間”内容)は出力されるのですが、暫くすると "クエリ式 '連番' の構文エラー:演算子がありません" と表示されます。 上記エラーの対処方法を教えて頂けたら思います。 尚、該当の数式ですが 前終了時間: DLookUp("終了時間","訪問業務テーブル(更新後)","連番=" & DMax("連番","訪問業務テーブル(更新後)","連番<" & [連番])) となっております。 ”連番”は オートナンバー形式のもので 1から順番に振られており、この連番を元にひとつ前レコードを参照する様にしております。 上記式に使用されている フィールドのデータ型ですが (1)連番: オートナンバー型 (2)終了時間: テキスト型 となっております。 お手数ですがよろしくお願いします。

  • レコードが追加できない

    SQL-Server2010を使用しています。 レコードを追加する際にキー項目が存在する場合は追加しないようなSQL文を作成しました。 追加するテーブルにレコードが1件以上あれば思ったとおりの処理となりますが、 1件も存在しない場合は追加できません。 下記がそのSQL文です。 原因と対策方法を教えて頂けませんでしょうか? INSERT INTO foo(商品コード, 商品名) SELECT DISTINCT 'ABC123' , 'りんご' FROM foo WHERE NOT EXISTS( SELECT * FROM foo WHERE 商品コード = 'ABC123' ) 以上です。 宜しくお願い致します。

  • エクセル SUMIFで条件をオートフィルする方法

    こんにちは。 貴重なスペースお借りいたします。 商品の価格平均をSUMIFを使って 別シートから参照して出そうと思うのですが B1にこの=SUMIF(sheet1!D1:D10, "りんご",sheet1!E1:E10)を入れて りんごの部分をA1に入力して参照(?)することは可能ですか?    A              B 1 りんご =SUMIF(sheet1!D1:D10, "=A1",sheet1!E1:E10) という様なことをしたいのですが... プラスで、この"=A1"をB1, C1とオートフィルで 連続させることはできないでしょうか( ; x _ x ) この式が有効でないのは理解しておりますので、 他に有効な式がありましたら教えていただけると幸いです。 全然違う関数になっても大丈夫です! 素人でも理解できる解説もしていただけると更にありがたい... よろしくお願いいたします!

  • 【SQL】あるマスタのレコードに存在しない項目を取得する。

    下記のような2つのマスタがあるとします。 ・商品名マスタ 商品コード  商品名 - - - - - -  - - - - - - n01       ナス k01       カボチャ n02       ニンジン t01       タマネギ ・購入履歴マスタ 履歴連番  商品コード  購入日時 - - - - -   - - - - - -  - - - - - - 001     n01      2008-07-01 002     k01      2008-07-02 003     n01      2008-07-03 004     n01      2008-07-04 005     k01      2008-07-04 このとき、購入履歴マスタのレコードに存在しない商品を取得するSQLはどのように組み立てればよいでしょうか? 例えば上記例で言えば、下記のような結果を得ることが目的です。 商品コード  商品名 - - - - - -  - - - - - - n02       ニンジン t01       タマネギ 以上、よろしくお願いします。

  • 値を入力したら一致する別シートの行を自動削除

    エクセルVBAで 2つのシートでシート2で値を入力したらシート1で一致する行ごと自動で削除する事は可能ですか? シート1(入荷待ち) コード  商品     001   みかん     002   イチゴ       003   りんご   シート2(入荷履歴) 日付  コード  商品   入荷数 6/1   001   みかん   10 6/2   003   りんご   10 例として上記ようなシートでシート2(入荷履歴)で(001のみかん)と(003のりんご)が入荷され シート2(入荷履歴)に入力するとシート1(入荷待ち)から自動で削除され(002のイチゴ)だけ残る という処理を自動で行いたいのですが、可能ですか? (入荷履歴の入荷数「D2」以降のセルに新しく入力があった場合の処理です。一致コードがない場合は自動削除をしない) 処理のタイミングはシート2(入荷履歴)の入力のユーザーフォーム作り 入力のPrivate Sub CommandButton1_Click()した時とします。 コードと商品アイテムは今後増える予定です。

  • エクセルで条件にあう複数行から最小日付を調べたい

    エクセル関数でどなたかご教授ください。 sheet1に発注日、商品コード、数量、入荷予定日が100行ほど入っています。 発注日順ですが、商品コードの同じ行は複数あり、また商品コード順ではありません。 (A) 1/20 CODE1 1,000 2/11 (B) 1/21 CODE2 2,500 2/04 (C) 1/21 CODE3 2,000 2/02 (D) 1/25 CODE1 1,500 2/14 (E) 1/27 CODE1 1,000 2/16 あるセルで商品コードを指定すると、数量合計と【最初の入荷予定日】が出るようにしたいのです。 数量はCODE1の場合sumifで(A+D+E) 3,500 と出せました。 ただ、 最初の入荷予定日=2/11 を求めるには、どんな関数を使えばいいのかわかりません。 ミニマム関数が使えれば、並び順にかかわらずできそうなのですが、 可変条件の場合どんな記述になるのでしょうか? よろしくご指導お願いいたします。

  • 多側のない1側レコードに多を入力するには

    こんにちは、いつもお世話になっています。 ウィンドウズ7 Access2010 質問なのですが、 1対多でリレーションされたテーブルレコードに、 1の中に多が一つもないレコードに対し、共通のレコードを追加することができますか? 以下例 1側テーブル  行コード(オートナンバー):1  行:あいうえお  行コード(オートナンバー):2  行:かきくけこ  行コード(オートナンバー):3  行:さしすせそ     中略  コード:10 行:わをん 多側テーブル  分類コード(オートナンバー):1  行コード:1  分類:母音  分類コード(オートナンバー):2  行コード:3  分類:子音  分類コード(オートナンバー):3  行コード:7  分類:子音 この場合、 1側テーブルの行コードが2、4~6、8~10の多側が入力されていません。 この未入力の多側テーブルに共通のレコードを入力したいのです。 ただし、共通と言っても、分類コードはオートナンバーで、 行コードは1側のテーブルに対応した数字を入力してほしいです。 おそらく、クエリで多側のない1側を抽出することはできると思います。 しかし、多側のない1側に一斉に?楽に入力するには何かいい方法がないでしょうか。 説明不足でしたらすみません、補足いたします。 すみませんが、どなたかご教授お願いいたします。

  • レコードプレーヤーについているプラグがわかりません

    レコードプレーヤーについているプラグがよくわからずに困っています。詳しい方、教えて下さい。 MIDIプラグ(http://www.weblio.jp/content/MIDI%E3%83%97%E3%83%A9%E3%82%B0?dictCode=PGNSR)というのに似ていますが、違っているのは、中にある棒のようなものが8本あることです。そして直径は1.4cmくらいです。 これがレコードプレーヤーから出ているケーブルの先についています。このレコードプレーヤーを使用したいのですが、何につないだら使用できるのかがわかりません。(アンプとつなぐのだろうとは思いますが、アンプは種類が多すぎてどれを選んだらいいのかもよくわからず困っています。)電源コードもついていません。このレコードプレーヤーには「AIWA ステレオレコードプレーヤー MODEL No.LX-E505」と書いてあります。使用するためにはどうしたらよいのかもアドバイスいただけたらとても助かります。よろしくお願いします。

専門家に質問してみよう