[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAを使ってやりたいことがあります!』(悩む事務)
はじめまして。
VBAを使い下記のような処理を自動で行いたいと
思っています。
例)
A B C D E F
1 氏名 年齢 勤続年数 氏名 年齢 勤続年数
2 太郎 25 3 西村 25 3
3 五郎 45 25 山根 26 5
4 六米 35 30 山田 50 30
手入力された表があります。
年度(毎年4月更新)が変われば年齢、勤続年数が自動で
変わるようにしたいと思っていますが、どのような
プログラムを組めばよろしいでしょうか?
宜しくお願い致します。
< 使用 Excel:Excel2010、使用 OS:unknown >
手入力は生年月日、入社年月日にできないものだろうか?
そうすればTODAY関数なり等年月を入力するなりで年齢、勤続年数を求めやすいが。
一応以前に
[[20160204135353]] 『自動で年齢を表示?』(事務マスター)
という似たような質問があったので参考に。 (ねむねむ) 2016/02/05(金) 15:58
以前に質問させてもらったものです。
600名程度が既に手打ちされている状態で、生年月日、入社年月日を
調べて入力するとなるとかなりきついです。
年度がかわる毎年4月で生年月日、入社年月日がかわればと思っています。
以前のプログラムでは、4月にマクロを手動で実行しなければいけず
また、一つのセルに対してのみのマクロでしたので複数ある場合
どうすればいいか全くわかりません。
いろいろと調べたのですが解決できずにいます。
すみませんが宜しくお願いします。
(悩む事務) 2016/02/05(金) 16:17
なぜすでに質問していてそちらで回答待ちなのに
>はじめまして。 と初めてのふりをして同じ質問を繰り返すのか。
別人のふりして質問せずに前回の質問へ詳しい説明を付けるなり前回の質問をきちんと閉じて改めて関連質問として 質問を立てればいいと思うが。
まあ、こちらも同じ質問者くさいな、と思ったのである意味カマをかけたんだが。 (ねむねむ) 2016/02/05(金) 16:24
マナー違反をしましてすみません。
どうか教えていただけないでしょうか?
宜しくお願い致します。
(悩む事務) 2016/02/05(金) 16:30
交通整理のみ。
Sub test() Dim Rng As Range Set Rng = ThisWorkbook.Sheets(1).Range("B1") If Len(Rng.Value) * IsNumeric(Rng.Value) Then Rng.Value = Rng.Value + 1 End Sub
というマクロを教えてもらい、これを今回の質問にあった形に修正したいらしい。
(ねむねむ) 2016/02/05(金) 16:41
>年度がかわる毎年4月で生年月日、入社年月日がかわればと思っています。 >以前のプログラムでは、4月にマクロを手動で実行しなければいけず… 手動で実行したくないということであれば、きっとブックを開いた時に実行などになるでしょう どこか使用していないセルに最終実行年度を保持しておく必要があるでしょう
しかし、この情報の保持の仕方は推奨できません もしなにかイレギュラーな事態が発生した場合、不安しか感じません 特に、年齢 勤続年数 ということですので、正確さを求められると思います 無条件に1を加算するやり方は、私には怖くて手が出せません 特に、前回提示されたコードを理解されていないのであれば、なおさらです
600件程度でしたら今後の為にも、ねむねむさんのおっしゃる通り、 A列:名前 B列:生年月日、C列:入社年月日 で1シートにデータを入力し、D列とE列に年齢と勤続年数を数式で出し、表示する別シートを作成する方がいいと思います
(____) 2016/02/05(金) 17:18
これは関数で計算すべきですね。
計算基準日というセルを設けて、
その時点での年齢、経過年数を計算するように計算式をセットします。
年一回更新するときに、計算基準日のセルを更新するだけです。
このようにしておいたほうが安心です。計算の再現性がありますから。
1を加算するVBA処理でやった場合、
・二度処理してしまったり、
・途中でエラーが発生したりすると、どこまで反映したのか不明になったり、
悩むことになります。
これは賢いVBAの使い方とは言えないと思います。
(γ) 2016/02/05(金) 22:00
どうしても入社年月、生年月日が取得できない場合でも、
勤続年数をプラス1して上書きなど、リスクが高い取扱ですから避けるべきです。
少なくとも現時点ではマクロに不案内のようですから、
他人から教わったマクロなどで安易に操作しないほうがよいと思います。
年に一回の処理であるなら、バックアップをとったうえで、
計算式で別シートに更新後の経過年数などを計算し、
それをきちんと結果検証したうえで、値に変更するといった扱いを推奨します。
なにより確実だと思います。
それに、大した手間でもないじゃないですか。
式は簡単にコピーペイストで増幅できるわけですし。
(γ) 2016/02/06(土) 08:09
計算用に使うだけで、年1回4月のみなら、日付を3月1日とかに決め打ちしてしまったらどうでしょうか。 (cai) 2016/02/06(土) 10:07
> 600名程度が既に手打ちされている状態で、生年月日、入社年月日を
> 調べて入力するとなるとかなりきついです。
権限上入手できないってはなしではないのですね。では。
ちゃんとした会社なら、従業員の生年月日、入社年月日のリストはかならずあるので
しかるべく手続きを踏んで、エクセルで開ける形でリストを分けてもらう。
あとは関数を使うなりして現シートに呼び込めばいいです。
※ 同姓同名には要注意です。
( 佳 ) 2016/02/06(土) 12:09
皆さまありがとうございます!
他の方が作成したエクセルを加工すると
なると大変です。
なんとか頑張ってやってみます。
皆さんありがとうございました。
(悩む事務) 2016/02/08(月) 09:16
正確性を考慮しなくてよいとした場合
毎年4月で年齢、勤続年数を1加算する方法は
どんな関数式になりますでしょうか?
誠すみませんが宜しくお願いします。
(悩む事務) 2016/02/08(月) 10:32
どこかのセルに=tody()関数を設置し、ここが4/1になると
表の年齢、勤続年数が1加算されるようにしたいと思っています。
(悩む事務) 2016/02/08(月) 10:39
そのマクロの最後に 日付を書き直すこと
(abc1955) 2016/02/08(月) 18:16
> 正確性を考慮しなくてよいとした場合
セルにテキトーな生年月日を入力し、関数で年齢を計算する。
( 佳 ) 2016/02/08(月) 21:24
>セルにテキトーな生年月日を入力し、関数で年齢を計算する。
言葉が足りないかもしれません。
正確な答えが必要なら正確な元情報を入力する。
正確でなくていいなら、その度合いに応じて、許せる範囲内で少々怪しいデータでも使う。
、、、というコトです。
もちろん、何のメリットもないのに正確性を犠牲にしてはいけません。
>他の方が作成したエクセルを加工すると
>なると大変です。
わたしがアドバイスしたとき考えていたのは、ひとさまが作成したファイルではありませんで
システムから取り出した一覧表(のかたちのエクセルファイル)です。
A列に上から社員番号、B列氏名、C列フリガナ、D列入社年月日、、、、みたいな。
(ありませんか?)
で、悩む事務さんのエクセルに数式を入れて、この表のデータを 悩む事務さんのエクセルに
呼び込みます。加工するのは悩む事務さんのエクセルです。いただいた表ではありません。
( 佳 ) 2016/02/09(火) 06:05
ご回答ありがとうございます。
試行錯誤してみます。
(団塊おやじ) 2016/02/09(火) 12:53
>(団塊おやじ) 2016/02/09(火) 12:53 ↓の質問も悩む事務さんだったんだ。ねむねむさんから指摘されているのに、なぜ同じことを繰り返すのかね。 [[20160208110046]] 条件に一致したセルの背景色を変更』(団塊おやじ) (bi) 2016/02/09(火) 13:00
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.