- ベストアンサー
EXCELカレンダー出勤日黒色、休日赤色から1、0
EXCEL会社カレンダー出勤日黒色、休日赤色があるとして ここから出勤日1、休日0のデータマトリックスを作るマクロを教えてください 例 2014/1 0,0,0,0,0,1,1,1,1,1 2014/2 0,0,1,1,1,1,1
- n-imoto-oy
- お礼率21% (18/84)
- SE・インフラ・Webエンジニア
- 回答数5
- ありがとう数2
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#4にまたしてもミス。重ね重ねすみません。 1)以下2行を編集する(等号の右辺) thisworkbook.worksheets("Sheet2").range("A1").offset(0, objRange.value) = "'" &objRange.value %", " は thisworkbook.worksheets("Sheet2").range("A1").offset(0, objRange.value) = "'" &objRange.value &", " (最後の項の前、% は & の間違い) なんだか、全角数字で日にちを書いてる気がしてきたので改定版です sub 変換() dim objRanges as range dim objRange as range dim nColor as integer dim nDay as integer set objRanges = Range(selection.address) for each objRange in objRanges nDay=CINT(objRange.value) if nDay >=1 AND nDay <= 31 then select case objRange.font.color case 255 '赤 ncolor = 0 case else 'その他(黒) ncolor = 1 end select thisworkbook.worksheets("Sheet2").range("A1").offset(0, objRange.value) = "'" & objRange.value & ", " thisworkbook.worksheets("Sheet2").range("A2").offset(0, objRange.value) = "'" & nColor & ", " end if next objRange set objRanges = nothing end sub カレンダー範囲は、手動で選択としてますが、 カレンダー範囲が固定なら set objRanges = Range(selection.address) 行を 変更してください。 Sheet1 のセルD3~セルJ8(7列×6行)の場合なら set objRanges = Thisworkbook.Worksheets("Sheet1").Range("D3:J8") でもOK。 毎月Sheet1 のセルD3~セルJ8でカレンダーを作ってください。 それなら、見出しもか。 Sheet1 のセルB2に年月入力して、 Sheet2 のセルA1に式[=Sheet1!B2 & ", "]を設定すると良いかも。
その他の回答 (4)
- bin-chan
- ベストアンサー率33% (1403/4213)
> 実行時エラー:型が一致しません ありゃー、数字以外があるんですか。「丸付き数字」とかかな? offset(0, objRange.value)行で、 objRange.valueが1~31の数値であるとして作成してます。 forEachの次行 if objRange.value <>"" then を if objRange.value >=1 AND objRange.value <=31 0then としてみてください。 CSV出力は省略してますがちょっとヒント。 1)以下2行を編集する(等号の右辺) thisworkbook.worksheets("Sheet2").range("A1").offset(0, objRange.value) = "'" &objRange.value %", " thisworkbook.worksheets("Sheet2").range("A2").offset(0, objRange.value) = "'" & nColor & ", " 2)Sheet2の結果範囲をメモ帳にでもコピペ 3)年月を手入力、各行末カンマ削除 4)名前を付けて保存、でファイル名前を"CALENDER.CSV"のように ダブルクォーテーションで囲って保存→これで拡張子がCSVで保存できる
- bin-chan
- ベストアンサー率33% (1403/4213)
#1・#2です。転記ミスがありました。 > set objRanges = Rangeselection.address) 'カッコ開くが足りませんです。 set objRanges = Range(selection.address) sub 変換() dim objRanges as range dim objRange as range dim nColor as integer set objRanges = Range(selection.address) for each objRange in objRanges if objRange.value <>"" then select case objRange.font.color case 255 '赤 ncolor = 0 case else 'その他(黒) ncolor = 1 end select thisworkbook.worksheets("Sheet2").range("A1").offset(0, objRange.value) = objRange.value thisworkbook.worksheets("Sheet2").range("A2").offset(0, objRange.value) = nColor end if next objRange set objRanges = nothing end sub
補足
ThisWorkbook.Worksheets("Sheet2").Range("A1").Offset(0, objRange.Value) = objRange.Value のところで 実行時エラー:型が一致しません のメッセージが出てしまいます どうしたらよいでしょうか?
- bin-chan
- ベストアンサー率33% (1403/4213)
#1です。超簡略版ですがご容赦ください。 以下、カレンダーのブックでAlt+F11キー押下して、標準モジュールを追加して貼り付け。 カレンダー範囲を指定して、マクロ[変換]を起動してください。 sub 変換() '【条件】 '・Sheet1 にカレンダーがあるとしますが実はSheet2以外ならどこでも良い。 '・列方向(七曜)の6行をい想定してるが、縦一列でもOK。 '・一箇月分を囲んでください。7×6なら矩形でOK。空白日付は読み飛ばします '・当然、休日には赤で着色済としますが、環境によって色コードが異なるかも。caseを調整してください。 '・結果はSheet2のセルB1:Cxxに出ます。 '・CSV化までは最初の要件になかったのでご容赦ください。 '・年月は考えてません。手入力でも何でもご自由に。 dim objRanges as range dim objRange as range dim nColor as integer set objRanges = Rangeselection.address) for each objRange in objRanges if objRange.value <>"" then select case objRange.font.color case 255 '赤 ncolor = 0 case else 'その他(黒) ncolor = 1 end select thisworkbook.worksheets("Sheet2").range("A1").offset(0, objRange.value) = objRange.value thisworkbook.worksheets("Sheet2").range("A2").offset(0, objRange.value) = nColor end if next objRange set objRanges = nothing end sub
- bin-chan
- ベストアンサー率33% (1403/4213)
うーん、前提条件少なすぎ。 例示データも1月分10件・2月分7件の意味がわからない。 「色を判断して、値[0]と[1]を知りたい」ということ? 「マクロの記録」で「着色するときどのようなコードが必要か」を調べ 「全セルについてIF文で判断」じゃないですか?
補足
詳しく補足例を書きます 下記のEXCELカレンダーがあるという前提です 1月 日 月 火 水 木 金 土 *1*2 *3 *4 *5 6 7 8 9 10 11 *12*13141516 17 18 *192021 22 2324*25 *262728 29 3031 上図で*は赤文字、その他は黒文字とします これから 2014/01 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 0 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 25 26 27 28 29 30 31 0 0 1 1 1 1 1 という0と1のデータ行を作りるEXCELマクロを作りたいのです。 会社の業務システムカレンダーを作るとき0,1のCSVファイルインポートせねばならないからです
関連するQ&A
- 休日出勤について
私は現在派遣社員としてある企業で働いているのですが、最近になり 派遣会社側よりカレンダーを渡されそこには現派遣先のカレンダーと わが社のカレンダーとが平行して書かれてあり、例えば派遣先が休みでわが社が出勤になっている日は営業所へ出社してください。となっています。理由は他社に派遣されている方々との出社日の差を無くすためだそうなんですが、こういった場合単純に休日手当ては発生するのでしょうか?
- ベストアンサー
- その他(ビジネス・キャリア)
- 休日の出勤について
休日出勤について質問させていただきます。 現在、勤めている会社で新卒採用の内定式が近々あり、 その日は日曜日となっています。 採用に関わっている総務や管理職と、一部の世話係の社員、 それと社長など役員が参加して行われる形です。 内定式が行われる場所は東京で、大阪・東京にいる社員で 採用に関わっていない人は内定式には参加しません。 しかし、なぜか内定式に参加しない他の社員についても、 内定式のある日(日曜)は全員出社して通常業務をすることになっています。 この場合、法的には休日出勤にはならないものなのでしょうか? 総務に確認したところ、平日の出勤と同じなので、 休む場合は有給休暇申請を出してください。と言われました。 会社の行事とは言え、日曜に出社して 休日出勤にはならないのは疑問です。 休日に出勤しても休日出勤とするか、平日出勤とするかは、 100%会社側の判断になるのでしょうか? ちなみに、大阪から内定式に参加する人については、 出張手当が付いているようです。当然と言えば当然ですが。 普通に考えれば、参加しない社員にも休日出勤手当が付きそうですが、 今回は「平日」の出勤日として扱われるらしく、何も付きません。 総務から特別な説明はなく、社内の年間カレンダーに出勤日と記載されるのみです。 内定式には参加せず、関わることもないのであれば、 日曜に全社員を出勤させるメリットは会社にはないかと思うのですが。 例えば、会社の行事がある日は、例外なく100%会社の判断で、 日曜だろうが祝日だろうが通常の出勤日に変更できる。 という法律でもあるのでしょうか? 個人的には、経営者が日曜に内定式で働いているのだから、 参加しない他の社員も全員出勤させるべきだ。 という経営者の独断で決めている感じを受けています。 実際の理由はともかく、今回のケースで休日出勤にならないのは、 法的にはありなのでしょうか? もしお分かりになる方がおられれば、ご教示の程お願い致します。
- ベストアンサー
- その他(法律)
- 休日出勤の賃金について
うちの会社は土日が休みですが、労働基準局へ年間カレンダーを提出するために作られたカレンダーには月に1~2回は出勤日になっています。でも、実際には休みです。ただ、当番で月に1回だけ出勤する日がありますが、人数の加減で出勤しなくてもいい月もあります。でも、出勤してもしなくても給料はまったく一緒です。しかも、土曜日は休日なので仕事が終わり次第早く帰ったりすると、その分残業手当から引かれます。だから早く帰るより全く出ない方が得です。つまり、「出たら損」って感じです。また、残業手当がつくくらい多くの回数の休日出勤をしても、その月に有給休暇をとると、残業手当がつかなくなります。これって許されることですか?
- 締切済み
- その他(法律)
- 出勤カレンダーについて
3班2交替の交替勤務(4勤2休)をしています。 長期連休があり、シフトを一部変更しなければならなくなりました。 このように変更します。 もともとの出勤カレンダー A班:5/7が出勤 B班:5/3が休み 変更カレンダー A班:5/7が休み B班:5/3が出勤 もともとの出勤カレンダーで監督署に届け出しているのですが、 内部だけの手続きで問題ないでしょうか? もちろん、休日出勤扱い等もありません。 宜しくお願いします。
- ベストアンサー
- その他(法律)
- 休日出勤が多い会社
知人が転職したのですが、そこの会社に勤めてから休日になかなか連絡が取れなくなりました。ある日電話が通じたのでどうしたのか聞いたところ、休日出勤が多いという事でした。 詳しい話を聞くと、会社カレンダー上はほぼ週休2日制で休日が多い会社だと喜んでいたのに、入社して2ヶ月休みを取れない状況らしいのです。新入社員だから会社から言われるままだそうで気の毒です。 知人の会社は1年単位の変形労働時間制をとっているらしいのですが、連続で働ける日数って特定期間であっても12日だと思うのです。1ヶ月も休みを取れないって労基法に違反してるんじゃないのか?って思います。 私の勤務している会社も変形労働時間制をとっています。週休1日の週では、出勤すると連続労働日数が6日を超えるから、絶対出勤してはいけないって会社から強く言われています。連続労働日数が6日を超えてはいけないって法律で定められているのに、こんなに簡単に違反しても何のお咎めも無いのでしょうか? 知人は休みが取れないのは辛いけど、40歳過ぎて正社員で雇ってくれる会社なんて、他ではもう無いかもしれないし、残業代や休日出勤手当はきっちり払ってくれるから、と休みが無いことについてはほぼ諦めているようです。 この会社が違反しているって何とか知らせることは出来ないでしょうか?
- ベストアンサー
- 社会・職場
- 36協定と休日出勤
36協定と休日出勤について 私の会社はサービス業のため変形労働時間性をとっており 会社と従業員の代表の間で36協定を結んでおります。 休日は他の会社のように毎週日曜と決まっているわけでなく 会社独自のカレンダーを採用しており 1週間に1日、月によっては1ヶ月で4日以上となっております。 (2週間休みの無い時もあります) 今回職員が何人か突然退職したため、上司の要請を受け 1ヶ月休まずに仕事をしました。 以前は休日出勤すると35%の割り増しと休日の残業には更に 割り増しがついていましたが、給料日の少し前に 36協定を結んでいるので法定休日に出勤しても35%の 割り増しはしなくてもいいので、これからは休日出勤は25%の割り増しにしますと口頭で会社から言われました。 また休日の残業も上記と同様で単なる25%の割り増しのみになりました。 そこで皆さんにご教授いただきたいのは36協定を結ぶと 法定休日に出勤しても35%の割り増しにならないのかと 同じく残業しても変わらないのか もうひとつは今回の発表が口頭でのみ伝えられ 就業規則及び給与規定には一切記載されず 記載の意思があるのかと会社側に聴いたところ 無いとの返事でしたが違法ではないのかの2点です。 後日、担当者に割り増しの件を直接聞いたら 会社独自で決めることができるとの返事でした。 法定休日と所定休日の違いは理解しております。
- ベストアンサー
- その他(法律)
補足
又エラーメッセージ型式が一致しませんが出ます ↓ nDay = CInt(objRange.Value) デバッグしたら objRange.Valueに大きなブランクが入っていました。