Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6746 / 13646 ツリー ←次へ | 前へ→

【43405】数式を変えるには? たろうくん 06/10/13(金) 12:27 質問[未読]
【43407】Re:数式を変えるには? ponpon 06/10/13(金) 13:10 発言[未読]
【43408】Re:数式を変えるには? たろうくん 06/10/13(金) 13:44 発言[未読]
【43409】Re:数式を変えるには? ハチ 06/10/13(金) 14:23 発言[未読]
【43410】Re:数式を変えるには? たろうくん 06/10/13(金) 15:10 発言[未読]
【43411】Re:数式を変えるには? たろうくん 06/10/13(金) 15:24 発言[未読]
【43414】Re:数式を変えるには? ハチ 06/10/13(金) 16:37 回答[未読]

【43405】数式を変えるには?
質問  たろうくん  - 06/10/13(金) 12:27 -

引用なし
パスワード
   教えて下さい
数式を変えるにはどうすればいいですか
2006年はH5に=INDEX(A!E:E,MATCH(E5,A!C:C,))&""
以下フィルコピーで設定してあります。
2007年になるとH5に
=INDEX(A!I:I,MATCH(E5,A!G:G,))&"" 同フィルコピーで設定
同じく2008年
=INDEX(A!M:M,MATCH(E5,A!K:K,))&""     〃
同じく2009年
=INDEX(A!Q:Q,MATCH(E5,A!O:O,))&""     〃
これをシート上のフォームのボタンで切替が出来るように
したいと考えているのですがマクロでこんな事出来ますか。
よろしくお願いします。
   E       F   G    H
4 日付          月    日    
5 2006/10/16 (月)     10    16    
6 2006/10/17 (火)     10    17    
7 2006/10/18 (水)     10    18    
8 2006/10/19 (木)     10    19    
9 2006/10/20 (金)     10    20    
10 2006/10/21 (土)     10    21    
11 2006/10/22 (日)     10    22    
12 2006/10/23 (月)     10    23    
13 2006/10/24 (火)     10    24    
14 2006/10/25 (水)     10    25    
15 2006/10/26 (木)     10    26    
16 2006/10/27 (金)     10    27    
17 2006/10/28 (土)     10    28    土休
18 2006/10/29 (日)     10    29    
19 2006/10/30 (月)    10    30

【43407】Re:数式を変えるには?
発言  ponpon  - 06/10/13(金) 13:10 -

引用なし
パスワード
   ▼たろうくん さん:
>教えて下さい
>数式を変えるにはどうすればいいですか
>2006年はH5に=INDEX(A!E:E,MATCH(E5,A!C:C,))&""
>以下フィルコピーで設定してあります。
>2007年になるとH5に
>=INDEX(A!I:I,MATCH(E5,A!G:G,))&"" 同フィルコピーで設定
>同じく2008年
>=INDEX(A!M:M,MATCH(E5,A!K:K,))&""     〃
>同じく2009年
>=INDEX(A!Q:Q,MATCH(E5,A!O:O,))&""     〃

>これをシート上のフォームのボタンで切替が出来るように
>したいと考えているのですがマクロでこんな事出来ますか。
>よろしくお願いします。

時間がないので考え方だけ
 ・フォームでするより、ワークブックのオープンイベントで
  now関数で現在の年をyear関数で取り出して、
 条件分岐(select case等)したらいかがでしょうか?
 数式の入力は、
 数式を入力する範囲.formula=">=INDEX(A!I:I,MATCH(E5,A!G:G,))&""""" 
 等とすると相対的に入力してくれるので、フィルの必要はありません。

最近はどじな回答が多いので間違っているかも??

>   E       F   G    H
>4 日付          月    日    
>5 2006/10/16 (月)     10    16    
>6 2006/10/17 (火)     10    17    
>7 2006/10/18 (水)     10    18    
>8 2006/10/19 (木)     10    19    
>9 2006/10/20 (金)     10    20    
>10 2006/10/21 (土)     10    21    
>11 2006/10/22 (日)     10    22    
>12 2006/10/23 (月)     10    23    
>13 2006/10/24 (火)     10    24    
>14 2006/10/25 (水)     10    25    
>15 2006/10/26 (木)     10    26    
>16 2006/10/27 (金)     10    27    
>17 2006/10/28 (土)     10    28    土休
>18 2006/10/29 (日)     10    29    
>19 2006/10/30 (月)    10    30

【43408】Re:数式を変えるには?
発言  たろうくん  - 06/10/13(金) 13:44 -

引用なし
パスワード
   ▼ponpon さん:
返事ありがとうございます。
感じは解りますがちょっとむずかしいです
Private Sub Workbook_Open()
Dim Today
Today = Now


Select Case
Case 1
Range(H5:H19).formula=">=INDEX(A!E:E,MATCH(E5,A!C:C,))&""""" 
Case 2
Range(H5:H19).formula=">=INDEX(A!I:I,MATCH(E5,A!G:G,))&""""" 
Case 3
Range(H5:H19).formula=">=INDEX(A!M:M,MATCH(E5,A!K:K,))&""""" 
Case 4
Range(H5:H19).formula=">=INDEX(A!Q:Q,MATCH(E5,A!O:O,))&""""" 
こんな感じかな?
もう少し詳しくおしえてー(-_-;)
>時間がないので考え方だけ
> ・フォームでするより、ワークブックのオープンイベントで
>  now関数で現在の年をyear関数で取り出して、
> 条件分岐(select case等)したらいかがでしょうか?
> 数式の入力は、
> 数式を入力する範囲.formula=">=INDEX(A!I:I,MATCH(E5,A!G:G,))&""""" 
> 等とすると相対的に入力してくれるので、フィルの必要はありません。
>
> 最近はどじな回答が多いので間違っているかも??
>
>>   E       F   G    H
>>4 日付          月    日    
>>5 2006/10/16 (月)     10    16    
>>6 2006/10/17 (火)     10    17    
>>7 2006/10/18 (水)     10    18    
>>8 2006/10/19 (木)     10    19    
>>9 2006/10/20 (金)     10    20    
>>10 2006/10/21 (土)     10    21    
>>11 2006/10/22 (日)     10    22    
>>12 2006/10/23 (月)     10    23    
>>13 2006/10/24 (火)     10    24    
>>14 2006/10/25 (水)     10    25    
>>15 2006/10/26 (木)     10    26    
>>16 2006/10/27 (金)     10    27    
>>17 2006/10/28 (土)     10    28    土休
>>18 2006/10/29 (日)     10    29    
>>19 2006/10/30 (月)    10    30

【43409】Re:数式を変えるには?
発言  ハチ  - 06/10/13(金) 14:23 -

引用なし
パスワード
   ▼たろうくん さん:
>2006年はH5に=INDEX(A!E:E,MATCH(E5,A!C:C,))&""
>以下フィルコピーで設定してあります。

これは、今日の日付が2006年 ですか?
E列の日付が ですか?

>2007年になるとH5に
>=INDEX(A!I:I,MATCH(E5,A!G:G,))&"" 同フィルコピーで設定
>同じく2008年
>=INDEX(A!M:M,MATCH(E5,A!K:K,))&""     〃
>同じく2009年
>=INDEX(A!Q:Q,MATCH(E5,A!O:O,))&""     〃

各列の並びに法則性があるなら(1年ごとに4列ごとですかね?)
関数だけでもいけるかもしれませんね。

【43410】Re:数式を変えるには?
発言  たろうくん  - 06/10/13(金) 15:10 -

引用なし
パスワード
   ▼ハチ さん:
返事ありがとうございます。
単純にコマンドボタンを押せば2006年の
2007年・2008年・2009年に
H列のH5:H19の書き換えがしたいのですが
ハチさんいかがでしょ

>>2006年はH5に=INDEX(A!E:E,MATCH(E5,A!C:C,))&""
>>以下フィルコピーで設定してあります。
>
>これは、今日の日付が2006年 ですか?
>E列の日付が ですか?
>
>>2007年になるとH5に
>>=INDEX(A!I:I,MATCH(E5,A!G:G,))&"" 同フィルコピーで設定
>>同じく2008年
>>=INDEX(A!M:M,MATCH(E5,A!K:K,))&""     〃
>>同じく2009年
>>=INDEX(A!Q:Q,MATCH(E5,A!O:O,))&""     〃
>
>各列の並びに法則性があるなら(1年ごとに4列ごとですかね?)
>関数だけでもいけるかもしれませんね。

【43411】Re:数式を変えるには?
発言  たろうくん  - 06/10/13(金) 15:24 -

引用なし
パスワード
   ▼ハチ さん:
ハチさんの質問に答えて無かったです。
>>2006年はH5に=INDEX(A!E:E,MATCH(E5,A!C:C,))&""
>>以下フィルコピーで設定してあります。
>
>これは、今日の日付が2006年 ですか?
>E列の日付が ですか?
日付はE列です
この日付は他のシートからの命令で変わります
単純にH5からH19のカレンダーの範囲を変えたいのです。
Aシートの
2006年のE列(日付)C列が休日等の項目
2007年がI列  〃  G列   〃
2008年がM   〃  K    〃
2009年がQ   〃  O    〃
です
>
>>2007年になるとH5に
>>=INDEX(A!I:I,MATCH(E5,A!G:G,))&"" 同フィルコピーで設定
>>同じく2008年
>>=INDEX(A!M:M,MATCH(E5,A!K:K,))&""     〃
>>同じく2009年
>>=INDEX(A!Q:Q,MATCH(E5,A!O:O,))&""     〃
>
>各列の並びに法則性があるなら(1年ごとに4列ごとですかね?)
ハイその通りです
>関数だけでもいけるかもしれませんね。

【43414】Re:数式を変えるには?
回答  ハチ  - 06/10/13(金) 16:37 -

引用なし
パスワード
   ▼たろうくん さん:

E5の年で処理を分けたいならこんな感じですか?

Sub Test()
  Dim Y As Integer
  
  Y = Year(Range("E5").Value)
  Select Case Y
    Case 2006
      MsgBox "Aです"
    Case 2007
      MsgBox "Bです"
    Case 2008
      MsgBox "Cです"
    Case Else
      MsgBox "その他です"
  End Select
End Sub

関数でやるなら(あんまり自信ないんですけど・・)
VLOOKUPを使ってこんな感じでいけないですかね?

=VLOOKUP(E5,OFFSET(A!G:I,0,(YEAR(E5)-2006)*4),3,0) & " "

6746 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free