一回も披露したことのない豆知識

例えば、下記の一覧(A表)よりA現場に現在ある機材の管理番号と機械名を抽出し別の一覧(B表)を作りたいです。
A表                          B表 6/9時点
日付  管理番号 機械名    搬出元  搬入先     管理番号  機械名
6/5   1111  ブレーカー   会社   A現場    1111    ブレーカー
6/9   1112  クレーン    B現場   A現場    1112    クレーン
7/1   1111  ブレーカー   A現場   会社        ⇩自動更新
7/8   1112  クレーン    A現場   会社   B表 8/1時点
8/1   1112  クレーン    会社   A現場    管理番号   機械名  
                              1112   クレーン
管理番号1111で考えた時、6/5時点ではA現場にあるのでB表に表示され、7/1には会社に戻しているので表から消える。管理番号1112で考えた時、6/9時点ではB表に表示され、7/8には表から消え、8/1に再度表示される。といったように手入力で作成したA表から自動で現場ごとに作成したB表に機材の動きが反映されるようにしたいです。

また、会社の機材一覧とA表より、会社に残っている機材についても自動で抽出できるようにしたいです。(A表の搬入先が会社になっている機材と、機材一覧にはあってA表には入力されていない機材)

機材一覧                         会社在庫 8/1時点
管理番号  機械名     シリアルNo.  ○○番号     管理番号  機械名
1111   ブレーカー   123456   456     1111   ブレーカー
1112   クレーン    134569    457     1113   タンク
1113   タンク     125793    113

ちなみにエクセルは2016年のもので古いため、使えない関数もあります...。
上手く説明できずすみませんが、ご回答宜しくお願い致します。

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

  • つらい・・・

    エクセルの使い方はわかるのですが、すみません。育休明けたばかりで、どう調べればいいのか上手く文章にすることができず、マニュアル本は読んでいませんが、ネットでかなり調べていろいろ試しましたが、思うようにできなかったので、こちらに投稿させていただきました。

    No.1の回答に寄せられた補足コメントです。 補足日時:2024/07/26 11:33
  • =IFERROR(INDEX(抽出対象の列,1/LARGE(INDEX((条件式)/ROW(条件範囲),0),ROW(A1))),"")
    この式に加えて、最新日の日付で抽出するためにはどの関数が使えますか?

    No.7の回答に寄せられた補足コメントです。 補足日時:2024/07/26 15:23
  • 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
  • 今の自分の気分スタンプを選ぼう!
あと4000文字

A 回答 (8件)

こんにちは



>この式に加えて、最新日の日付で抽出するためにはどの関数が使えますか?
一発で求めようとすると、関数式が複雑になるので、順に求めた方がわかりやすいと思いますけれど・・
(まとめて配列計算を行うと、計算負荷が増大しやすいこともあります)

日付順に抽出するので良ければ、ご提示の方法でROW()の代わりに日付を用いれば、日付の順序が抽出できますよね?
ただし、欲しいのは行番号なのでしょうから、「INT(日付)*10000+ROW()」などをソートキーとして用いれば、「日付順でかつ行番号情報を付した値」を得ることができます。
検索のインデックスとしては行番号が必要でしょうから、上記の値に対して
 MOD(上記の値, 10000)
を求めれば、ROW()の部分だけを取り出すことが可能という仕組みです。
(上例では9999行迄の範囲を想定)

ただし、ご提示の式ではLARGE関数の代わりにSMALL関数を用いることはできないので、昇順でしか結果を求めることができません。
(条件に外れたものを0としているので、SMALLではそちらがヒットしてしまう)


一方で、エクセル2016なら、AGGREGATE関数が利用可能と思いますので、これを応用する方法を用いれば昇順、降順どちらにでも対応できます。
https://support.microsoft.com/ja-jp/office/aggre …
方法はご提示の式とほぼ同様ですが、条件に合致しないものをエラー値として無視する点が異なります。(これによって昇順・降順とも可能になります)
昇順の場合であれば、
=IFERROR(INDEX(検索対象列,AGGREGATE(15,6,ROW(セル範囲)/(条件式),ROW(A1))),"")
のような要領です。
日付順にソートしたい場合には、前述と同様の置換えをすれば可能になります。


※ 最新のバージョンならSORT関数とFILTER関数で簡単にできますけれどね。
    • good
    • 0

1. 最新の日付のレコードを確認するために、各管理番号の最新の日付を抽出する必要があります。

これを行うために、ピボットテーブルや関数を使用します。
2. 各機材の最新の搬入先が「A現場」であるかを確認します。
この回答への補足あり
    • good
    • 1
この回答へのお礼

ありがとう

お礼日時:2024/07/26 15:23

各機材の最新の搬入先を確認するために、最新の日付のエントリを取得します。

これには、Excelの「VLOOKUP」関数や「INDEX」と「MATCH」関数の組み合わせが便利です。
    • good
    • 0

エクセルの機能がどんなのがあるか?などを抜きにして、ペンと紙を使っての手作業でやったら、どういう手順でやればいいか?を考えるのが最初だと思います。


そして、その手順をエクセルで実現するにはどうすればいいか?ってのを考えるのが次のステップです。
もし、手順がエクセルマクロの組み合わせなどで可能と思えば、次のステップとしてマクロを作ればいいだけ。
もし、マクロで実現するのが無理なら、エクセルVBAのプログラムを作ることになります。
自分で上記ができないなら、どこかの開発会社にお願いするとか、No.2さんの回答にあるように、仕事を有料でやってくれる方たちのいるサイトを通じて作業依頼をするのがいいでしょうね。
    • good
    • 0

まずこんな感じの表にして下さい。

「エクセルで現場ごとに機材の移動状況を一覧」の回答画像4
    • good
    • 0
この回答へのお礼

ありがとう

お礼日時:2024/07/26 15:25

A表とB表を別シートに作って必要なセルをB表にコピーして不要データを関数で消すで出来ると思います。


具体的な表をアップして見て下さい。
具体的にアドバイス出来ると思います。
    • good
    • 0

('ω') 分からなければ、ひとつずつ手入力でOK。



紙の上に作った表に書き写すのと同じです。

・・・

もっと詳しく使えるようになってから横着できる関数やマクロを使うようにしましょう。

要は、ご自身のレベル相応の使い方をしましょうという事です。

赤の他人から教えてもらっても良いのですが、それを信用した結果、嘘を教えられ会社に損害を与えたらどうなるかを考えたことはありますか。

・・・

あとね、この質問文は「私の成果として使ってやるから代わりに作れwww」って内容になってるってことに気付きましょう。

ここは
 自力で解決するためアドバイスをもらう場所 
です。

そんなわけで少なくとも、どこまで試行錯誤したのか
「思うようにできない」
というやり方について示しましょう。
そうすれば、
 ”思うようにできない理由”
や、
 ”改善点”
をアドバイスしてもらえます。

……まあ、中には「こんなの簡単だぜ」と己惚れた輩がそのまんまの回答をすることもありますけどね。

「教えて!goo」は「代わりにやれ、オレ様の成果として使ってやるwww」という【作業依頼】または、課題の【丸投げ】をする場所ではありません。
これは利用規約で明確に禁止されています。
【作業依頼】をしたいのであれば、有料サイトで代価を支払って委託しましょう。
(自分なら500円で請け負ったうえに解説まで付けて納品するかな)
    • good
    • 1

エクセルのマニュアル本読めばこの程度は比較的簡単に出来る筈


エクセルの使い方を知らない人に説明しようとしても無駄です
先ずは、本を読んで練習しましょう
この回答への補足あり
    • good
    • 0

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