『カレンダーで実績表を作るには?』(ヤマモ) こんばんわ。エクセルでわからない事があればよく拝見させて頂き、勉強させて頂いております。 今、会社の日々の実績表作り中なのですが、初心者の為出来るのかもわからず 質問させて頂きます。 [[20030520153010]]『月を入力するだけで変わるカレンダーを』(kobayashi) の内容を拝見させて頂き、このようなカレンダーを表示させ、1日から31日までの日付の下にボタンがあり、そのボタンを押すと日付のところまで移動し、日々の入力が出来ればと思っております。 実際に出来るものなのかどうかわかりませんがご伝授お願い致します。 (シート1) 10月 1日 2日  3日 4日 5日 6日 7日 ●  ●  ●  ●←〔ボタン〕 8日 9日.......... ●  ●.......... A B 1  1日りんご売上  1日みかん売上 2   3000円      2000円 3  2日りんご売上  2日みかん売上 4   2000円      1000円 5  3日りんご売上 ..... 上記の様に毎日の売上を入力し、下記のようにシート2で 累計処理が出来る表を作りたく思ってます。 (シート2) A B 1  りんご累計売上  みかん累計売上 2    5000円      3000円 ---- カレンダーコントロールが使えるなら (Accessなどがインストールしてないと使えないみたい??) Private Sub Calendar1_Click() Cells(Day(Calendar1.Value) * 2, 1).Select End Sub で、シートのセルが簡単に選択できそうです。 初めて触ってみたので、どのようにしたら効率がよいのか分かりませんが・・・ 取りあえず、セル選択のみのサンプルを下に置いておきます。 (カレンダーコントロールがExcelで使えない場合は、 動かないと思いますが・・・サンプルはExcel2002で作成) http://www.geocities.jp/hatch4700/ # ちょっと無責任な気もしますが・・・提案だけということで(^^;)    (Hatch) ---- おはようございます。 わちきも作ってみますた。 ポントはいつも日付が当日であること シートのレイアウトがわからないので任意の場所に移動出来る様に Findで検索すること、、かな??? どうでしょう? v(=∩_∩=)v←久々 (SoulMan) Option Explicit Private Sub Calendar1_Click() Dim MyDate As Date Dim MyTbl As Range, C As Range With Me Set MyTbl = .Range("A2", .Range("A65536").End(xlUp)).Resize(, 4) MyDate = .Calendar1.Value Set C = MyTbl.Find(MyDate, LookIn:=xlFormulas, LookAt:=xlWhole, MatchCase:=True) If Not C Is Nothing Then C.Offset(, 1).Select Else MsgBox "日付が設定されていません" .Calendar1.Value = Date End If End With Set MyTbl = Nothing End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Me.Calendar1.Value <> Date Then Me.Calendar1.Value = Date End If End Sub http://ryusendo.no-ip.com/cgi-bin/upload/src/up0122.xls 失礼!ちょっと訂正 >ポントはいつも日付が当日であること ↓ 日付が当日じゃなかったら当日にすること でした。m(._.)m ペコッ 2004/10/30 13:22 ---- 一般関数のみで作ったものです。 過去にカレンダーを作っていたので、それを利用してみました。 ※毎日集計するとのことなので、本来はジャンプする機能は必要なさそうなんですけどね(^_^A; http://skyblue123.hp.infoseek.co.jp/Excel/MyCalendar.xls オオボケ_/ ̄|○ il||li、カレンダーの意味無くなってるし_/ ̄|○ il||li ※おまけにハイパーリンク使ってるから、クリックしただけじゃ動かない_/ ̄|○ il||li ってことで、リンクを外しました。 修正:14:40 カレンダーの日付をクリックすれば、指定日にジャンプできるようにマクロを組み込みました_/ ̄|○ il||li てことで、再度リンクを復活させました。 試す方はダウンロードしてお使いください。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count <> 1 Then Exit Sub If Target.Row > 14 Or Target.Row < 3 Then Exit Sub If Target.Column > 9 Or Target.Column < 3 Then Exit Sub If Target.Row Mod 2 <> 0 Then Exit Sub MyYear = Year(Target.Value) MyMonth = Month(Target.Value) MyDay = Day(Target.Value) MyDate = "DATE(" & MyYear & "," & MyMonth & "," & MyDay & ")" Cells(8, 1).FormulaR1C1 = _ "=HYPERLINK(RIGHT(CELL(""filename""),LEN(CELL(""filename""))-FIND(""["",CELL(""filename""))+1)&""!$C$""&MATCH(" _ & MyDate & ",R18C1:R48C1,0)+ROW(R[10]C)-1,TEXT(" & MyDate & ",""m月d日""))" End Sub (川野鮎太郎) ---- (Hatch)さま(SoulMan)さま(川野鮎太郎)さま ほんとに無理なお願いしたにもかかわらず早々有難うございました。 頑張ってみます。 ---- 川野様の表を使わせて頂きましたが、教えて下さい 8行ずつ挿入してみましたが指定日セルへをクリックすると カレンダーの月末あたりがクリックした時#N/Aと出てしまいます。 方法はありますでしょうか? それと当日セルヘと指定日セルへとをカレンダーの右側に持っていくにはコピーではダメなんですね?方法あります? それとsheet1〜sheet4までをAさん、Bさん、Cさん、Dさんの実績表を sheet5で合計表を出したいのですがどのようにすれば 良いでしょうか?宜しくお願い致します。 A B 1  1日りんご売上  1日みかん売上                   ←−−この間に8行挿入したい 2   3000円      2000円 3  2日りんご売上  2日みかん売上                   ←−−この間に8行挿入したい 4   2000円      1000円                   ←−−......... 5  3日りんご売上 ..... ---- >8行ずつ挿入してみましたが指定日セルへをクリックすると >カレンダーの月末あたりがクリックした時#N/Aと出てしまいます。 マクロで数式を入れるようにしているので、行挿入で参照先が変わったからです。 一応修正しておきました。 >当日セルヘと指定日セルへとをカレンダーの右側に持っていくにはコピーではダメなんですね 通常は移動するときはコピーではなく、文字通り移動です。 ただ今回はやはりマクロで書き込むようにしているためコードを修正する必要があります。 これも一応修正しておきました。 >それとsheet1〜sheet4までをAさん、Bさん、Cさん、Dさんの実績表を >sheet5で合計表を出したいのですがどのようにすれば良いでしょうか シートを丸ごとコピーすればいくつでも追加できます。 集計は、通常の集計と同じで串刺しの計算式を入れれば良いと思います。 集計シートのC18からF18に式を入れておきました。 修正したものが以下のファイルです。再度ダウンロードしてください。 http://skyblue123.hp.infoseek.co.jp/Excel/MyCalendar2.xls ※ちなみにA18をからI298までを下方にコピーしてA300に貼り付け、 A18を1/1に変えセルA300に =MAX(A18:A297)+1 を入れる。 A300からI580を下方にコピーしていけば1年分でも入力可能です。 その際はマクロのコードの Const MyRn2 As Long = 298 '指定日セルの最後の行                         ~~~↑この数字を最終行に変えます。 (川野鮎太郎) ---- 川野さん ホントに有難うございます。 ほんとビックリしました。なんせ初心者なもので...... 初心者のくせに自分で調整しようと思っても見たのですが、5時間パソコンの前で考えてました。 も1つだけ質問いいですか? 8行でお願いしましたが、これを15行に変える場合は何処のコードを変えたらよいですか?挑戦してみます。宜しくお願い致します。 ---- 川野さんすいません。10月1日の下のAの19のセルの行が現状13.5になってますが この行のみを20に変えて、月末までコピ-出来ますか?20に変えて下へ下げてもすべて13.5になっちゃいます。教えていただけませんか? ---- ごめんなさい。行のコピーはできました!!。何度も変な質問ですいません。 ---- シートのタブを右クリック−コードの表示でVBEが開きますので、 15行に変えた場合の最終行(仮に500)を上で書いたように下記のコードの数値を変えます。 Const MyRn2 As Long = 298 '指定日セルの最後の行             ↓ Const MyRn2 As Long = 500 '指定日セルの最後の行 (川野鮎太郎) ---- すいません。ダウンロードさせてもらってますが、質問させてください。超初歩的かもしれませんが、11月に変更して11月2日ので部分でセルを1行挿入しA27からI36までを下へ下げてずーとコピーしようと思ったのですが日付けも消えてしまい出来ません。 行挿入して数式もコピーできないものでしょうか? ---- 1行増やす場合は、18行から27行の間で1行挿入、次に28行から37行の間で1行挿入 28行から38行を選択してから下方にフィルコピーです。 (川野鮎太郎) ---- 川野さま 有難うございます。 質問ですが上記のように1行ずつ増やしたとして30行目のみを行の高さを35にして月末までコピ-使用としましたが一つ目のコピー先からずっとセルの行が元に戻ってしまいます。どうしたらよいですか?宜しくお願い致します。 ---- ご質問の意味が良く理解できませんが・・・。 30行目だけ行高を35に変えて、28行(日付けの入った行)から37行(次の日付けの上の行)までを選択して 下方にフィルコピーで良いのじゃないかな・・・。 (川野鮎太郎) ---- 川野さん ごめんなさい。意味が解りずらいですよね。カレンダー2の表で、各セルの行高が13.5になってますが20行にセルを行高35にかえて、29行行目にも行高を35に変えてずっと月末のセルまでコピーしていって20行、29行、38行、47行、56行、65行....290行のセルだけ35の高さにする表を作りたいんです。コピーの事は初歩的な質問だとは思ってるんですが宜しくお願い致します。 も1つ質問させて下さい。当日セルへと指定日セルへをクリックすると、A22へジャンプするようにするにはどこのコードを変えればよいでしょうか? ---- 上で書いたように、最初の日と、次の日だけ行高さを手動で変更して、 2日の行(27〜36行)を選択して下方にフィルコピーです。 A22へジャンプするには、当日セルのK4セルの式を以下に変えてください。 =HYPERLINK(RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("[",CELL("filename"))+1)&"!$A$"&MATCH(TODAY(),$A$18:$A$298,0)+ROW(A18)+3,TEXT(TODAY(),"m月d日")) 指定日セルへジャンプは、マクロコードを以下に変えてください。 Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) '変数宣言 Dim MyYear As Integer Dim MyMonth As Byte Dim MyDay As Byte Dim MyDate As String '定数宣言 Const MyRow As Long = 8 '指定日セルの行 Const MyCol As Long = 11 '指定日セルの列 Const MyRn1 As Long = 18 '日付けセルの最初の行 Const MyRn2 As Long = 298 '指定日セルの最後の行 Const MyR1 As Long = 4 'ジャンプ先の行(日付けからのオフセット行) If Target.Count <> 1 Then Exit Sub If Target.Row > 14 Or Target.Row < 3 Then Exit Sub If Target.Column > 9 Or Target.Column < 3 Then Exit Sub If Target.Row Mod 2 <> 0 Then Exit Sub MyYear = Year(Target.Value) MyMonth = Month(Target.Value) MyDay = Day(Target.Value) MyDate = "DATE(" & MyYear & "," & MyMonth & "," & MyDay & ")" Cells(MyRow, MyCol).FormulaR1C1 = _ "=HYPERLINK(RIGHT(CELL(""filename""),LEN(CELL(""filename""))-FIND(""["",CELL(""filename""))+1)&""!$A$""&MATCH(" _ & MyDate & ",R" & MyRn1 & "C1:R" & MyRn2 & "C1,0)+ROW(R[10]C)+" & MyR1 - 1 & ",TEXT(" & MyDate & ",""m月d日""))" End Sub 一応修正したものをアップしておきましたので、再度上のMyCalendar2.xlsをダウンロードしてください。 (川野鮎太郎) ----------------------------------------- 川野さん。たびたびすいません。作って頂いたカレンダーでクリックすると「指定日セルへ」に日が入りますが、ダブルクリックすると数式が出てきます。多数の人間が利用する予定になってますのでダブルクリックしても数式が出ないようにして数式をつぶされないように保護したいのですがどうしたらよいでしょうか? 後チョットで出来そうです。 ---- 保護は行挿入や列挿入など書式の変更も出来なくなるので、以下をマクロのコードに追加してください。 今まであったコードのEnd Subの下にコピペしてください。 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Target.Address <> "$K$4" Then Exit Sub Range("K4").FormulaR1C1 = _ "=HYPERLINK(RIGHT(CELL(""filename""),LEN(CELL(""filename""))-FIND(""["",CELL(""filename""))+1)&""!$A$""&MATCH(TODAY(),R18C1:R298C1,0)+ROW(R[14]C[-10])+3,TEXT(TODAY(),""m月d日""))" Application.EnableEvents = True End Sub (川野鮎太郎) ------- あっ、これはσ(^◇^;)でもわかるべ これか Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True End Sub これかな Private Sub Worksheet_Change(ByVal Target As Range) Target.Offset(1).Select End Sub v(=∩_∩=)v (SoulMan) ---- ところで・・・。 私の作った表のK4セルをダブルクリックできますか・・。>ヤマモさん 自分でやってみたら何回やっても出来なかった_/ ̄|○ il||li んで、F2押したり、矢印キーでK4選択して、消しても、変更しても式を再度入れるようにしました(^_^A; (川野鮎太郎) ----------------------- 川野さま、SoulManさま ほんとにありがとうございます。時間はかかりましたが、実績表が仕上がりました。特に川野さまには何度も何度も質問させてもらい、その都度早々に答えて頂きありがとうございました。マクロに触れたのも初めてで、解らない事が多かったですが自分なりに納得できた実績表が出来上がりました。今後も参考にさせて頂きエクセルもっと知っていきたいと思います。