[[20250521140823]] 『期間で検索した該当するセルを左詰めに表示』(ふわまる) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『期間で検索した該当するセルを左詰めに表示』(ふわまる)

有給管理簿を作成しています。

2024年シートに2024/1/1〜2024/12/31までの有給取得日と日数(1.0or0.5)を入力した表があります。

社員番号|有給付与日|取得1回目|1回目日数| 2回目 | 日数…40回まで続

    003 |  2024/6/2|2024/1/5 |1.0  |2024/2/20 |  0.5  …
    005 | 2024/3/20 |2024/2/10 | 1.0   | 2024/5/12 |  1.0   …

別シートに個人の有給管理簿を表示させたいです。

有給付与日以降のデータを抽出して、左詰めに表示させたい場合、
どのような関数を入力したら良いでしょうか。

ちなみに、2025年シートもあり、
個人の有給管理簿シートに有給付与日の前日より前の有給取得日と日数も
表示したいです。

どうぞよろしくお願いいたします。

< 使用 Excel:Excel2008(Mac)、使用 OS:Windows11 >


 両方の表を、行番号、列番号がわかるような形式で説明されるのが解決への近道になります。

(xyz) 2025/05/21(水) 14:32:53


追加で情報を追加します。

2025年シートにも
        A B C D E F
1行目・・・社員番号|有給付与日|取得1回目|1回目日数| 2回目 | 日数…40回まで続
2行目・・・ 003 | 2025/6/2|2025/3/5 |1.0  |2025/5/20 | 0.5  …
3行目・・・ 005 | 2025/3/20 |2025/1/10 | 0.5 | 2024/5/12 | 1.0  …

というデータがあり、

個人管理のシートでは

社員番号をA1セルに入力すると有給付与日から1年間の有給取得日と日数が表示されるようにしたいです。

A1セルに社員番号005を入力すると
以下のように表示させたいです。

      A B C  …続く
2行目  1回目   | 2回目  | 3回目
3行目  2024/5/12|2025/1/10|
4行目   1.0  |  0.5 

こちらの説明で分かりますでしょうか。
説明が下手で申し訳ないですが、助言がございましたら、よろしくお願いします。

(ふわまる) 2025/05/21(水) 14:45:35


 005さんの2回目の取得は、1回目よりも古いのですか?しかも付与日以前ですよね。
  どうなっているのか説明されたほうが回答がつきやすいと思います。私はこれで。

(xyz) 2025/05/21(水) 15:06:48


整理のお手伝いだけ。

   |   A    |    B     |    C    |    D    |    E    | F  |〜〜|  CC  | CD |
 1 |社員番号|有給付与日|取得1回目|1回目日数|  2回目  |日数|    |40回目|日数|
 2 |  003   |2025/6/2  |2025/3/5 |1.0      |2025/5/20|0.5 |    |      |    |
 3 |  005   |2025/3/20 |2025/1/10|0.5      |2024/5/12|1.0 |    |      |    |

取得と日数がセットになっていると推測し、取得40回目がCC、40回目の日数がCDだろうとしましたが、違っていたら修正してください。
E3は2025/5/12ではないかと思いましたが、元データのままにしてあります。

   |    A    |    B    |    C    |〜〜|   AN   |
 1 |   005   |         |         |    |        |
 2 |  1回目  |  2回目  |  3回目  |    | 40回目 |
 3 |2024/5/12|2025/1/10|         |    |        |
 4 |   1.0   |   0.5   |         |    |        |

こちらも40回目までするのだろうと推測し、ANを40回目としましたが、違っていたら修正してください。
3行目の数値をどこから持ってきたのかは全く推測できなかったので、元データのままにしてあります。
2025から持ってきた場合、1回目と2回目の場所が違うので。
(ぴ) 2025/05/23(金) 11:21:22


「ぴ」さん、整理してくださってありがとうございます!!
すごく助かりました。
日付は私が間違えて入力してしまっています。それが余計に事態をややこしくしていると思います。

改めて「ぴ」さんが整理してくれた内容を踏まえて、記入しますね。
日付も修正します。

現在?@と?Aの表があります。そのデータを使って
個人別で取得日から1年間の有給管理簿の表を作りたいです。

?@2024/1/1〜/12/31の有給取得日と日数を記入した有給管理簿。
 シート名「2024年」

   |   A    |    B     |    C    |    D    |    E    | F  |〜〜|  CC  | CD |
 1 |社員番号|有給付与日|取得1回目|1回目日数|  2回目  |日数|    |40回目|日数|
 2 |  003   |2024/6/2  |2024/3/5 |1.0      |2024/7/20|0.5 |    |      |    |
 3 |  005   |2024/3/20 |2024/1/10|0.5      |2024/5/12|1.0 |    |      |    |

?A2025/1/1〜12/31の有給取得日と日数を記入した有給管理簿。
 シート名「2025年」

   |   A    |    B     |    C    |    D    |    E    | F  |〜〜|  CC  | CD |
 1 |社員番号|有給付与日|取得1回目|1回目日数|  2回目  |日数|    |40回目|日数|
 2 |  003   |2025/6/2  |2025/1/6 |1.0      |2025/5/10|1.0 |    |      |    |
 3 |  005   |2025/3/20 |2025/3/10|0.5      |2025/4/12|1.0 |    |      |    |

【作りたい表】
新しい「個人別」というシートに
個人別の2024年の有給取得日から2025年の有給取得日前日までの1年間の
有給取得管理簿を作成したいです。

「A1」に社員コードを入れれば、有給取得日と日数が表示されるようにする時の
 3行目と4行目に入力する関数が知りたいです。

   |    A    |    B    |    C    |〜〜|   AN   |
 1 |   003   |         |         |    |        |
 2 |  1回目  |  2回目  |  3回目  |    | 40回目 |
 3 |2024/7/20|2025/1/6 |2025/5/10|    |        |
 4 |   0.5   |   1.0   |   1.0   |    |        |

なにかアドバイスがありましたら、どうどよろしくお願いいたします。

(ふわまる) 2025/05/26(月) 11:27:23


 ぱっと思うことだけですが...

 Excel 2008 for Mac で関数だけではシートを跨いで
「完全自動化」はかなり厳しいですよ。

 ほぼ不可能です。VBAならなんとかって思いますが
 う〜ん、しっかり設計しないとって思います。
(あみな) 2025/05/26(月) 13:32:06

 Excel365ならいざ知らず、
 これは関数で頭を悩ますより、VBAで書くのがよさそうな気がします。
 私もあみなさんの指摘に同感です。

 (1)まずは二つのシートを、それぞれこんな形式に変換します。(VBAで)
    氏名    付与日      取得日      日数
    P003    2024/6/2    2024/3/5       1
    P003    2024/6/2    2024/5/20    0.5
    P003    2024/6/2    2024/6/20      1
   (以下略)

 (2)フィルタオプションで、付与日以降とか、付与日以前とか絞り込むことはできるでしょう。

 (3)最後に各人のシートに分離します。(フィルタオプションでできそうです)

 なお、最終フォーマットも
 氏名    付与日      取得日      日数

 のような形式で、縦に並べたほうがよさそうに思いました。
 40日もあったら、横に並べたら1枚に納めて印刷することもできませんし、
 縦に並べたほうが見やすいし、オートフィルタなどを掛けるにも便利です。
 (横だとオートフィルタ使えません) 
(xyz) 2025/05/26(月) 13:53:48

 Excel 2008 for Mac ではVBAが使えないという噂を聞きましたよ

 Office Tanaka Excel 2008 for Macレビュー >
http://officetanaka.net/excel/mac/tips02.htm

 Excel for MacのVBA基礎
https://note.com/ew2/n/nf164da8dc1fa#189d12b3-e3a9-487d-9a41-0f7266a5f06a 
(´・ω・`) 2025/05/26(月) 14:42:18

 あらま〜 VBAが使用できないんですね。

 (´・ω・`)さん ありがとうございます。

 どうしたら...(´;ω;`)
(あみな) 2025/05/26(月) 14:57:51

 ふわまるさんへ

 既に、「2024年」「2025年」の横持ちシートは作成済みなのでしょうか?
 それとも案だけなら、個人別に縦型に落とし込むのは無理ですかね?
(あみな) 2025/05/26(月) 15:21:14

 そうでしたか、残念です。
 PowerQueryでのデータ操作もできないんでしょうね。
(ちょっと調べましたけどデータ読み込みだけみたいな印象です。)

 # 表のレイアウトはつくづく重要と感じ入りました。
 # ROMに回ります。

(xyz) 2025/05/26(月) 15:58:20


ふわまるさんへ

2024年と2025年や個人別のレイアウトを変えることは可能ですか?(不可・可能・一部可能)

レイアウトを無視した内容だけを見た場合、「年毎の有給取得日と日数(MAX40)」と「有給期間中の有給取得日と日数(MAX40)」なので、レイアウト変更が可能であればもう少し考えやすい気がしました。

今のままでも方法はあるかもしれませんが、一旦上記の理由からの質問です。
(ぴ) 2025/05/26(月) 16:13:53


たくさんコメントをいただきありがとうございます!

大変申し訳ありません。
まずExcel2010 for Windowsが正しいです。
間違った選択をしてしまいました。
そして、数ヶ月後にExcel365を導入する予定です。

あみなさん、ぴさんへ
2024年、2025年はレイアウト変更不可ですが、個人別は可能です。

私のすでに使ってしまった表のレイアウトがよくなかったんですね…
365を導入したらなんとか関数だけで可能でしょうか。

(ふわまる) 2025/05/26(月) 22:15:25


 回答ではありません。

 Excel365を前提とした案を調べましたので、今後の参考に供します。

 Excel2010で一つの数式でというのは難しいでしょう。
 INDEX,ROW,COLUMN,MOD,QUOTIENT関数などを使ったり、フィルタオプション等を使って、
 ステップを追って作業していけばできそうです。
 # 私が割ける時間が切れましたので、私はここまでとします。

 getDataと言う名の、Bookベースの名前を、以下の数式に対して付与します。
 【数式】
 =LAMBDA(pname,
     LET(
         fn,LAMBDA(rng,
             LET(
                 a,MAKEARRAY(40,1,LAMBDA(r,c,CHOOSECOLS(rng,1))),
                 b,MAKEARRAY(40,1,LAMBDA(r,c,CHOOSECOLS(rng,2))),
                 body,WRAPROWS(DROP(rng,,2),2,""),
                 HSTACK(a,b,body)
             )
         ),
         a,TRIMRANGE(Sheet1!$A$2:$CD$100,2),
         b,FILTER(a,CHOOSECOLS(a,1)= pname),
         c,fn(b),
         d,FILTER(c,CHOOSECOLS(c,2)<=CHOOSECOLS(c,3)),

         aa,TRIMRANGE(Sheet2!$A$2:$CD$100,2),
         bb,FILTER(aa,CHOOSECOLS(aa,1)=pname),
         cc,fn(bb),
         dd,FILTER(cc,(CHOOSECOLS(cc,2)>=CHOOSECOLS(cc,3))*(CHOOSECOLS(cc,3)>0)),

         VSTACK(d,dd)
     )
 )

 各人のシートの1行目には
 A           B           C           D
 社員番号    付与日      取得日      取得日数
 という見出しをつけ、

 A2セルに
 =getData("003")
 と入力すると、A2:Dnセルに
 社員番号 003 に対するデータが取得できるはずです。

 例
     A
     社員番号   付与日      取得日     取得日数
     003       2024/6/2    2024/6/3          1
     003       2024/6/2    2024/6/10         1
     003       2024/6/2    2024/6/17         1
     003       2024/6/2    2024/6/24         1
     003       2024/6/2    2024/7/1          1

 なお、数式は上限約100名程度とした数式にしています。簡単な修正で上限を増やせます。

 # やっていることは関数もVBAもさほど変わりがないように思いますし、
 # 私にとっては、関数よりVBAのほうが簡単に見えます。
 # デバッグも関数のほうが難しい気がします。

(xyz) 2025/05/27(火) 11:31:11


xyzさん

回答案、ありがとうございます。

chat-gptの開設を見て、ここはこういう意味があるのかぁと少しづつ学びながら眺めています。
私にとってはVBAは難しすぎて、一部の方しか理解できない特別なものという感覚ですが、
関数・VBAともに理解している方がおっしゃられるのでしたら、VBAのほうが簡単なのかもしれませんね。
VBAの超基本の本をとりあえず購入してみました。
365を導入しましたら、回答案をExcel上で試してみますね。

まず、表の設計の部分が重要ということも分かりました。
これからも試行錯誤していきます。

お忙しいところたくさんのアドバイスをいただきありがとうございました。

(ふわまる) 2025/05/28(水) 10:08:32


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.