[[20150701071422]] 『平日勤務表をはりつけたら、土日の列を間に入れた』(桜ラブラブ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『平日勤務表をはりつけたら、土日の列を間に入れたい』(桜ラブラブ)

平日勤務表を作成しており、平日の日にちが横並んでいます。別シートにはりつけたら、金曜と月曜の列の間に、土日(できれ祝日も)の列を間にいれたいです。
土日の列は空白で。
お願いします。

< 使用 Excel:Excel2010、使用 OS:Windows8 >


 >できれ祝日も

 ということは、平日勤務表には、土日のみならず祝日も記載されていないということですね?
 そうすると、金と月の間という判断ではなく、横に並んだ日付で連番になっていないところを挿入追加していくということで
 いいんですよね?

 関数で列挿入はできませんのでVBAになりますが。

(β) 2015/07/01(水) 08:14


 平日勤務表に記載された2番目の日付からは、この判定でいいでしょうが、最初の日付に対してどうしましょうか。

 たとえば 最初の日付が 6/2 だったとします。(6/1が祝日と仮定しましょう)
 そうすると、その前に挿入すべき列は、どこまで?
 とりあえず、6/1分を挿入するんだろうなということはわかるんですが、その前の 5/31、5/30 といった土日分も挿入?
 さらに、5/29が祝日だったと仮定すると、5/29分も挿入?

 どこまで挿入しましょうかね。
 さかのぼるとして、最初の日付と同じ月の範囲ということでいいのでしょうか?

 この平日勤務表に記載されている日付の範囲は、月? 週? 任意の不特定の範囲?

(β) 2015/07/01(水) 08:38


元のシートにも休日分の列を含めておいて、非表示にしておく、というのは駄目でしょうか?
(???) 2015/07/01(水) 09:10

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

bさん
ひつけの範囲は当月一ヶ月分です。
6月2日から月末最終営業日まで入力します。

6月の頭が土日祝日としても、五月のは不要です。
元が2日から入力しているとして、別シートにはりつけたら、一日の列は空白がいいかなと。

?さん
もとのひょうに、休日分いれてしまうと、関数がたくさんあり、重くなるので無理です
(桜ラブラブ) 2015/07/01(水) 11:00


 >>元が2日から入力しているとして、別シートにはりつけたら、一日の列は空白がいいかなと。 

 ということは、列挿入という考え方をかえて、
 ・別シートに該当の月の1日から最終日までの日付行を作成し
 ・元シートから同じ日付のところに内容をコピペ
 というやりかたが簡単かもしれません。

 いずれにしても、具体的なシートのレイアウトを教えていただければ、お手伝いはできるかと思います。

(β) 2015/07/02(木) 11:31


コピペが面倒くさいと年配先輩がいるもので、、、
レイアウト、特殊な表で、わかりづらく、ごめんなさい。

L31に7月1日(水)、O31に2日(木)←土日祝日を飛ばして次の日が表示されます
S31に3日(金)と、オートコピーしました。

ひっぱってきてほしい列は、n,r,vと四行離れています。

わからなかったら、別シートの日にちが、31行に該当する場合、R列のデータ持ってくる方法ありませんか?
(桜ラブラブ) 2015/07/02(木) 12:27


 推測より、以下とします

 【元データ】シート

    _____N____  O P Q _____R_____ S T U _____V_____ W X Y _____Z_____ AA AB AC   ……
 ?  7月1日(水)        2日(木)         3日(金)     6日(月)

 【ひっぱってくる】シート

    _____L____  M N _____O_____  P Q R _____S_____ T U V _____W_____ X Y Z _____AA____ AB AC ……
 31 7月1日(水)      2日(木)          3日(金)       4日(土)        5日(日)

 L列とO列には勝手に土日祝日を飛ばした日付が表示されるのですか?
 7/1は3列分、7/2は4列分となると、日付によって必要な列数は異なるということですか?

(もあ) 2015/07/02(木) 14:00


う〜ん説明がわるくてすいません。

(桜ラブラブ) 2015/07/02(木) 22:57


 >>う〜ん説明がわるくてすいません。 

 ということではなく、

 ・(もあ)さんの提示された推測レイアウトが正しいのか、そうではないのか。
 ・そうではないとしたら、実際のレイアウトは、どうなのかを(もあ)さんがアップされたような形式で説明。

 そうしてほしいんですが?

 >>もとのひょうに、休日分いれてしまうと、関数がたくさんあり、重くなるので無理です

 ということは、挿入された列にも、関数の設定が必要ということですか?

 ★元シートの矩形の表の左右上下に、空白行、空白列はありますか?
  それとも、表に隣接して、値(あるいは)数式の入ったセルがあるのでしょうか?

(β) 2015/07/03(金) 05:57


 まったくレイアウトが想像できないので、サンプルです。
 新規ブックの Sheet1 の B2 (この場所はコードの最初で規定していますので変更可能です)から右に、土日祝日を除く日付を【連続して】いれてください。
 で、各列に適当な数式付のデータを何行か記入してください。
 以下のマクロを実行するとSheet2に土日休日列を挿入した表がつくられます。

 で、いやいや、このレイアウトは実際とは異なる ということでしょうから、それを具体的に教えてもらって
 下記コードをチューニングしましょう。

 Sub Test()
    Const stR As Long = 2       '表の開始行番号(日付行)
    Const stC As String = "B"   '表の開始列
    Dim stDate As Date
    Dim days As Long
    Dim shF As Worksheet
    Dim shT As Worksheet
    Dim lines As Long
    Dim c As Range

    Application.ScreenUpdating = False

    Set shF = Sheets("Sheet1")  '★元シート
    Set shT = Sheets("Sheet2")  '★転記シート

    stDate = shF.Range(stC & stR).Value
    stDate = DateSerial(Year(stDate), Month(stDate), 1)
    days = Day(DateSerial(Year(stDate), Month(stDate) + 1, 0))
    lines = shF.Range("A1", shF.UsedRange).Rows.Count - stR + 1
    shT.Range(stC & stR).Resize(lines, days).ClearContents
    shT.Range(stC & stR).Value = stDate
    shT.Range(stC & stR).Resize(, days).DataSeries Rowcol:=xlRows, Type:=xlChronological, Date:=xlDay

    For Each c In shF.Range(stC & stR, shF.Cells(stR, shF.Columns.Count).End(xlToLeft))
        c.Resize(lines).Copy shT.Range(stC & stR).Offset(, Day(c) - 1)
    Next

 End Sub

(β) 2015/07/03(金) 07:12


コメント返信:

[ 一覧(最新更新順) ]


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