[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『カレンダーで実績表を作るには?』(ヤマモ)
こんばんわ。エクセルでわからない事があればよく拝見させて頂き、勉強させて頂いております。
今、会社の日々の実績表作り中なのですが、初心者の為出来るのかもわからず
質問させて頂きます。
[[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
(川野鮎太郎)
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 '指定日セルの最後の行 ~~~↑この数字を最終行に変えます。 (川野鮎太郎)
シートのタブを右クリック−コードの表示でVBEが開きますので、 15行に変えた場合の最終行(仮に500)を上で書いたように下記のコードの数値を変えます。 Const MyRn2 As Long = 298 '指定日セルの最後の行 ↓ Const MyRn2 As Long = 500 '指定日セルの最後の行
(川野鮎太郎)
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さま ほんとにありがとうございます。時間はかかりましたが、実績表が仕上がりました。特に川野さまには何度も何度も質問させてもらい、その都度早々に答えて頂きありがとうございました。マクロに触れたのも初めてで、解らない事が多かったですが自分なりに納得できた実績表が出来上がりました。今後も参考にさせて頂きエクセルもっと知っていきたいと思います。
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.