Excel VBA質問箱 IV

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

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


4598 / 13644 ツリー ←次へ | 前へ→

【55644】指定したセルに値を貼り付ける方法 かな 08/5/14(水) 15:28 質問[未読]
【55645】Re:指定したセルに値を貼り付ける方法 ハチ 08/5/14(水) 15:34 発言[未読]
【55648】Re:指定したセルに値を貼り付ける方法 ひげくま 08/5/14(水) 15:54 回答[未読]
【55670】Re:指定したセルに値を貼り付ける方法 かな 08/5/15(木) 9:15 質問[未読]
【55671】Re:指定したセルに値を貼り付ける方法 テト 08/5/15(木) 9:53 発言[未読]
【55672】Re:指定したセルに値を貼り付ける方法 ひげくま 08/5/15(木) 10:00 回答[未読]
【55673】Re:指定したセルに値を貼り付ける方法 ハチ 08/5/15(木) 10:56 発言[未読]
【55713】Re:指定したセルに値を貼り付ける方法 かな 08/5/16(金) 15:19 お礼[未読]

【55644】指定したセルに値を貼り付ける方法
質問  かな  - 08/5/14(水) 15:28 -

引用なし
パスワード
   初心者です。
どうしてもわからないので教えてください。

「シート1」でコピーしたセルの値を「シート2」の指定した場所にペーストしたいのですが、うまくいかなくて困っています。

「シート1」の内容

例)5/2の出勤状況
下記のような表があります
------------------------------
 名前|出欠
------------------------------
 青木|●
------------------------------
 青山|×
------------------------------
 大田|●
-------------------------------

「シート2」は、5月度の出勤状況を一ヶ月分まとめるフォーマットになってます

名前|5/1|5/2|5/3|5/4|・・・・    
青木|   ●
青山|
大田|

例えば、青木さんの出勤をシート2に貼り付けしたい場合、
5/2(列)の青木(行)の交わるセルを取得するには、どうしたらよいでしょうか?
教えてください。

よろしくお願いします

【55645】Re:指定したセルに値を貼り付ける方法
発言  ハチ  - 08/5/14(水) 15:34 -

引用なし
パスワード
   ▼かな さん:
>
>例)5/2の出勤状況

この日付のデータはどこにあるのでしょうか?
これがデータとしてないと「できない」という回答になると思います。

>下記のような表があります
>------------------------------
> 名前|出欠
>------------------------------
> 青木|●
>------------------------------
> 青山|×
>------------------------------
> 大田|●
>-------------------------------
>
>「シート2」は、5月度の出勤状況を一ヶ月分まとめるフォーマットになってます
>
>名前|5/1|5/2|5/3|5/4|・・・・    
>青木|   ●
>青山|
>大田|

この名前行の「5/1」は日付型の値ですか?

どのあたりまで、理解できて(コードが書けて)
どこがわからないか明示してください。

【55648】Re:指定したセルに値を貼り付ける方法
回答  ひげくま  - 08/5/14(水) 15:54 -

引用なし
パスワード
   > 5/2(列)の青木(行)の交わるセルを取得するには、どうしたらよいでしょうか?

質問を文面通りにとらえると、

5/2(列)は、日付が並んでいる行に対して、Findで「5/2」を検索して、そのセルの列を取得。
青木(行)は、名前が並んでいる列に対して、Findで「青木」を検索して、そのセルの行を取得。
取得した列と行の値を使って、Cells(行, 列)とすることによって、「 5/2(列)の青木(行)の交わるセルを取得」することができます。

という回答になるのですが、これで解りますか?

これで解らないようであれば、ハチさんのおっしゃるように、
どのあたりまで、理解できて(コードが書けて)
どこがわからないか明示してください。

【55670】Re:指定したセルに値を貼り付ける方法
質問  かな  - 08/5/15(木) 9:15 -

引用なし
パスワード
   ハチ様 ひげくま様

すみません・・・
説明不足でした。

まず「本日の出勤」(シート1)があります

●5/4の出勤状況←「5/4(日付)」の部分は、関数=TODAY()で表示します

   出欠|休暇理由
-------------------------------
青木|● |
-------------------------------
大森|× |私用
--------------------------------
磐田|● |
----------------------------------
大前|夜勤|
--------------------------------
山田|● |
-------------------------------

上記のように、毎日、出勤状況が入ってきます。
それをシート2「月集計」のシートに毎日の出勤状況を集計したいということですが、

「月集計」のフォーマットは下記の通りです
5/1の行は日付型です。
名前|5/1|5/2|5/3|5/4|・・・・・・
-------------------------------
青木|  |  |  | ● | 
-------------------------------
大森|  |  |  |私用|
--------------------------------
磐田|  |  |  |● | 
----------------------------------
大前|  |  |  |夜勤|
--------------------------------
山田|  |  |  |● |
-------------------------------

Dim Kyou As String
Dim Myname As String

Kyou=Sheet("本日の出勤").Range("B1").Value

’月集計のシートの名前を上から下へ順番に見ていき、「本日の出勤」の名前と
 一致したら、隣列の出勤の値をコピーして、それを月集計の指定の位置へ貼り付けしたいと考えてます。

Sheets("月集計").Select
Range("a4").Select
Do While ActiveCell.Value<>""
MyName=ActiveCell.Value

ActiveCell.offset(1,0).Select

Sheets("本日の出勤").Select
Range("a5").Select
Do While ActiveCell.Value<>""

If ActiveCell=MyName Then
IF ActiveCell.Offset(0,1).Value="●"Then
  ActiveCell.Offset(0,1).Select
  Selection.Copy
ElseIf ActiveCell.Offset(0,1).Value="夜勤"Then
  ActiveCell.Offset(0,1).Select
  Eslection.Copy
Else
  ActiveCell.Offset(0,2).Select
  Selection.Copy
End If
End If

ここまで作成しました。
ここから、「月集計」の指定セルに貼り付けさせるには、どういったコードを書けば
いいのでしょうか?

分かりにくくてすみません

よろしくお願いします

【55671】Re:指定したセルに値を貼り付ける方法
発言  テト  - 08/5/15(木) 9:53 -

引用なし
パスワード
   日付と名前で Find したら?
それで対象セルのアドレスが取得できると思うけど。

【55672】Re:指定したセルに値を貼り付ける方法
回答  ひげくま  - 08/5/15(木) 10:00 -

引用なし
パスワード
   詳細説明ありがとうございます。

ところで、この処理は、マクロでやる必要は内容に思うのですが・・・

名前の列ですが、どちらのシートも、名前の並びは同じなんですよね?

なのであれば、「本日の出勤」しーとのどこかの列(D列とか)に、
=IF(B2="×",C2,B2)
という式を入れておいて、
毎日、その列をコピーして、値だけを「月集計」のその日の列に貼り付ければ良いだけです。

その作業すら面倒なのでしょうか?

【55673】Re:指定したセルに値を貼り付ける方法
発言  ハチ  - 08/5/15(木) 10:56 -

引用なし
パスワード
   ▼かな さん:

しっかりコードが書ける方なのですね。安心しました^^

>●5/4の出勤状況←「5/4(日付)」の部分は、関数=TODAY()で表示します

TODAY関数で入力されているとすると、
「当日日付の処理を行う」ということで良いですか?

提示されているコードを拝見すると、

「ループは理解している」
「変数は使ってない(理解してない?)」

といった感じでしょうか?

Findで行うのが効率が良いと思いますが、
変数とループだけでも十分処理できる内容です。
理解できるコードで書くことが、大切だと自分は思っています。

「月集計」の日付行を横方向にループして、一致する日の列番号を変数cに入れる
「月集計」の名前列を縦方向にループして、一致する名前の行番号を変数rに入れる

Worksheets("月集計").Cells(r,c) が対象のセル

こんな感じでわかりますか?
他の方の書き込みも参考にしてください。

【55713】Re:指定したセルに値を貼り付ける方法
お礼  かな  - 08/5/16(金) 15:19 -

引用なし
パスワード
   テトさん
ひげくまさん
ハチさん
 
ありがとうございます。

▼ひげくまさん
名前の並びは毎回一緒というわけではないのです。
人数も多く、マクロで作成しようと思いました。


みなさんのアドバイスを聞いて、もう一度やってみます。

ありがとうございました

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