• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル(Excel)で貸し出し管理表を作りたいのですが・・・)

エクセルで貸し出し管理表を作成する方法

このQ&Aのポイント
  • エクセルを使って貸し出し管理表を作成する方法を教えてください。
  • 上部に貸出品の情報を表示し、下部に入力用の表を作成します。
  • 同じ品の貸し出しや返却があった場合、上部の表が自動的に更新されるようにします。

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

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

こんにちは! 外していたらごめんなさい。 A列は全ての貸出NOが入力されるとしています。 ↓の画像のF2・F3セルに入る数式はいずれも配列数式になってしまいますので、 この画面からコピー&ペーストしただけではエラーになると思います。 F2・F3セルに貼り付け後、F2キーを押す、又は貼り付けセルをダブルクリック、又は数式バー内で一度クリックします。 編集可能になりますので、Shift+Ctrl+Enterキーで確定します。 数式の前後に{ }マークが入り配列数式になります。 F2セルに =IF(F1="","",INDEX($B$2:$B$100,LARGE(IF($A$2:$A$100=$F$1,ROW($A$1:$A$99)),1))) としてShift+Ctrl+Enterキーです。 同じくF3セルに =IF(F1="","",INDEX($C$2:$C$100,LARGE(IF($A$2:$A$100=F1,ROW($A$1:$A$99)),1))) として配列数式! これでB・C列のデータの中で、F1セルに入力された貸出NOの一番したの行が表示されます。 尚、数式は100行目まで対応できるようにしていますが、 データ量によって範囲指定の領域はアレンジしてください。 以上、参考になれば良いのですが 的外れなら読み流してくださいね。m(__)m

noname#151651
質問者

お礼

移動させると機能いたしませんでしたが、教えていただいた方法ではうまくいきました! ありがとうございました!

noname#151651
質問者

補足

画像のとおりですとうまくいくのですが、、、 右の表を上に移動させたとたん機能しなくなります。。。

その他の回答 (4)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

A1セルに貸出品、A2セルに貸出時刻、A3セルに返却時刻と入力し、B1セルには例えばNO1と入力します。 A6セルには貸出NO、B6セルには貸出時刻、C6セルには返却時刻の文字列をそれぞれ入力します。 その下の行には例えばお示しの入力データがあるとします。 そこで作業列としてE7セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A7="","",A7&"/"&COUNTIF(A$7:A7,A7)) 最後にB2セルに次の式を入力し、B3セルまでオートフィルドラッグします。 =INDEX(B:C,MATCH(RIGHT(B$1,LEN(B$1)-2)&"/"&COUNTIF(A:A,RIGHT(B$1,LEN(B$1)-2)),E:E,0),ROW(A1)) B2セルからB3セルのセルの表示形式を時刻に設定することでB1セルで指定した貸出品の最新のデータが表示されます。

noname#151651
質問者

お礼

ありがとうございます! しかし、私のやり方が間違っているのか、、、うまくいきませんでした。。。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 今仮に、上部の表が入力されているセル範囲をA1~B3、下部の表が入力されているセル範囲をA5~C99とします。  まず最初に、2つの表が入力されているファイル内の適当な場所に、下部の表と同じ行数を持つ、縦1列の表を作って下さい。(印刷や表示の邪魔にならない場所が良いと思います。別のシートでも可)  ここでは仮に、D5~D99の範囲に作る事にします。  そして、D6セルに =IF(A6="","",A6&"番"&COUNTIF(A$6:A6,A6)) という数式を入力して下さい。  D6に数式を入力した後、D6セルを、D7セル~D99セルにコピーして下さい。  次に、B2セルに =INDEX($B$6:$C$99,MATCH(SUBSTITUTE(B$1,"NO","",1)&"番"&COUNTIF($A$6:$A$99,RIGHT(B$1,LEN(B$1)-2)),$D$6:$D$99,0),1) と入力して下さい。  続いて、B3セルに =INDEX($B$6:$C$99,MATCH(SUBSTITUTE(B$1,"NO","",1)&"番"&COUNTIF($A$6:$A$99,RIGHT(B$1,LEN(B$1)-2)),$D$6:$D$99,0),2) と入力して下さい。  以上で完了です。  尚、上下の表中の、貸出時刻や返却時刻の欄は、[セルの書式設定]の[表示形式]を、全て共通にして下さい。  この数式は、下部の表の「貸出NO」の欄に入力される一連の番号(又は文字列)の中に、B1セルに入力されている文字列から、「NO」の文字列を削除した文字列が、存在している複数の行の中の、最も下に位置する行を探し出して、その行の貸出時刻や返却時刻を表示しております。  ですから、B1セルに入力されている文字列を、「NO1」を「NO2」に変えると、貸出NO2の最後の貸出・返却時刻を表示します。  しかし、「NO1」を「NO.1」や「NO1」に変えたり、B1セルと「貸出NO」の欄に入力される一連の番号の中に、全角文字と半角文字が混ざり合っている場合には、正常に動作しませんので、御注意願います。  後、数式中の 番 と書かれている部分は、仮に決めたものですから、貸出NOに使用する可能性のない文字列であれば、他の文字列に変更されても構いません。

noname#151651
質問者

お礼

私のやり方が間違っていたのか、うまくいきませんでした。。。 ありがとうございました!

  • mimeu
  • ベストアンサー率49% (39/79)
回答No.2

類似の質問が 2月21日の23時にありました。 『エクセルの関数で「最新の結果」を反映させるためには』 です。 結論としてワークシート関数では不可能です。 しかし、VBAなら簡単にできます。 Worksheet.Change イベントを処理すればよいと思います。

noname#151651
質問者

お礼

やはりVBAなら簡単なのですか・・・ そのあたりも視野に検討してみます。 ありがとうございました!

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

貸出時刻だけ入力されていて、返却時刻が入力されていない場合は、上部の表はどうなれば良いのでしょうか? >つまり、貸し出し品NOが同じ品の場合、 これは、何と何が同じ場合ですか? 上部の表の番号と、入力された番号が同じ? それとも、入力された番号と、その前に入力された番号? 貸出品番号が違う場合は、どうするんですか?

noname#151651
質問者

お礼

表のNOのことでありました。。。 説明が下手で申し訳ありませんでした。。。 ありがとうございました!

関連するQ&A