Excel VBA質問箱 IV

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

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


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

【46983】検索値を別シートへ転記 hiro 07/2/24(土) 17:27 質問[未読]
【46990】Re:検索値を別シートへ転記 かみちゃん 07/2/24(土) 18:14 発言[未読]
【46998】Re:検索値を別シートへ転記 hiro 07/2/24(土) 19:09 お礼[未読]
【46999】Re:検索値を別シートへ転記 かみちゃん 07/2/24(土) 19:28 発言[未読]
【47001】Re:検索値を別シートへ転記 hiro 07/2/24(土) 19:34 お礼[未読]
【47002】Re:検索値を別シートへ転記 かみちゃん 07/2/24(土) 19:45 発言[未読]
【47004】Re:検索値を別シートへ転記 hiro 07/2/24(土) 20:27 お礼[未読]
【47006】Re:検索値を別シートへ転記 かみちゃん 07/2/24(土) 21:29 発言[未読]
【47008】Re:検索値を別シートへ転記 hiro 07/2/24(土) 22:24 質問[未読]
【47009】Re:検索値を別シートへ転記 かみちゃん 07/2/24(土) 22:27 発言[未読]
【47024】Re:検索値を別シートへ転記 かみちゃん 07/2/25(日) 16:29 回答[未読]
【47044】Re:検索値を別シートへ転記 hiro 07/2/26(月) 20:13 お礼[未読]

【46983】検索値を別シートへ転記
質問  hiro  - 07/2/24(土) 17:27 -

引用なし
パスワード
   只今勉強中の超初心者です
どなたか教えてください
    2    月                    
    16171819202122
名前    火水木金土日月
1岩田    出                        
2中村    名                        
3深田    東                        
4北    東                        
5藤田    大                        
6矢野    名                        
7山内    休                        
8松村                            
9山田    休

シート1に上のシフト表があります
c5から番号 d5から氏名 100人とe3からaj3まで日が入ってます(16日から1日)
シート2のc2に日を入力して行き先別に氏名を表示したいのです

 A  B  C  D  E  F  G  H   I  J    K L   M  N
1            東京       名古屋       休日
2 2 月  16 日   深田 北     中村 矢野     岩田 山内 
3
4
5
6
                                

16日東の人はF2:H6 名の人はI2:K6 大の人はL2:L6 休日の人はM2:P6に表示させたく思います (シート1の "出"の人も休日に表示させる)
                        
                                Sub マクロ10()
On Error GoTo Errorhandler
Worksheets(2).Range("F2").Value = _
Worksheets(1).Range("E5:E100").Cells.Find(Worksheets(2).Range("F1").Value) _
.Offset(0, -1).Value
Exit Sub
Errorhandler:
MsgBox "検索値は見つかりません"
End Sub
自力ではまだこれが限界でいきずっまってます
C2に入れた値から列範囲を習得するのと 検索結果が複数の処理もうまくいきません どなたか よろしくお願いいたします

【46990】Re:検索値を別シートへ転記
発言  かみちゃん E-MAIL  - 07/2/24(土) 18:14 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>シート1に上のシフト表があります
>c5から番号 d5から氏名 100人とe3からaj3まで日が入ってます(16日から1日)

若干ずれているような感じなのですが、以下のような感じですか?
   A B C D  E F G H I J K
  1
  2      2    月
  3      16 17 18 19 20 21 22
  4    名前 火 水 木 金 土 日 月
  5   1 岩田 出
  6   2 中村 名
  7   3 深田 東
  8   4 北  東
  9   5 藤田 大
 10   6 矢野 名
 11   7 山内 休
 12   8 松村
 13   9 山田 休

> e3からaj3まで日が入ってます(16日から1日)

この意味がわかりません。
E3〜AJ3は、32列あるのですが、これと16日から1日の関係はどうなっているのでしょう
か?
もしかして、16日から翌月15日の間違いですか?その場合、大の月と小の月がある場合
の扱いはどうなっているのでしょうか?
また、2月と書かれている場合は、E3は、2月16日ということでいいのですか?

>16日東の人はF2:H6 名の人はI2:K6 大の人はL2:L6 休日の人はM2:P6に表示させたく思います (シート1の "出"の人も休日に表示させる)

Sheet1のE列〜AJ列に「東」と入力されている人は、Sheet2の東京の列(F列〜H列)、
Sheet1のE列〜AJ列に「名」と入力されている人は、Sheet2の名古屋の列(I列〜K列)、
Sheet1のE列〜AJ列に「大」と入力されている人は、Sheet2の大阪の列(L列)、
Sheet1のE列〜AJ列に「休」または「出」と入力されている人は、Sheet2の休日の列(M列〜P列)
に転記したいということでいいですか?
あと、1日あたり5行ということでいいですか?

この場合、最大転記数は以下のとおりになりますが、大丈夫ですか?
東京は、3列×5行=15人、
名古屋は、3列×5行=15人、
大阪は、1列×5行=5人、
休日は、4列×5行=20人、
これらの最大転記数を超えたら、どうするのですか?

Sheet1のE列〜AJ列は1日も漏れなく入力してありますか?
Sheet2のC列は、5行おきに1日も漏れなく入力してありますか?
この条件であれば、Sheet1の列数によって、転記先の行は決めることができます。
つまり検索する必要はまったくありません。

【46998】Re:検索値を別シートへ転記
お礼  hiro  - 07/2/24(土) 19:09 -

引用なし
パスワード
   ▼かみちゃん さん:
ありがとうございます
ご指摘のとおり
16日から翌月15日の間違いです

また、2月と書かれている場合は、E3は、2月16日ということです
小の月のときは31日の列を削除しては無理でしょうか?

>Sheet1のE列〜AJ列に「東」と入力されている人は、Sheet2の東京の列(F列〜H列)、
>Sheet1のE列〜AJ列に「名」と入力されている人は、Sheet2の名古屋の列(I列〜K列)、
>Sheet1のE列〜AJ列に「大」と入力されている人は、Sheet2の大阪の列(L列)、
>Sheet1のE列〜AJ列に「休」または「出」と入力されている人は、Sheet2の休日の列(M列〜P列)
>に転記したいということでいいですか?
>あと、1日あたり5行ということでいいですか?
>
>この場合、最大転記数は以下のとおりになりますが、大丈夫ですか?
>東京は、3列×5行=15人、
>名古屋は、3列×5行=15人、
>大阪は、1列×5行=5人、
>休日は、4列×5行=20人、
はい それで大丈夫です
最大転記数を超えることはありません

>
>Sheet1のE列〜AJ列は1日も漏れなく入力してありますか?
はい入力してあります 空白セルは社内勤務を意味します

>Sheet2のC列は、5行おきに1日も漏れなく入力してありますか?
はい c2の次はc7に17と入力します。

説明不足ですいません

【46999】Re:検索値を別シートへ転記
発言  かみちゃん  - 07/2/24(土) 19:28 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>16日から翌月15日の間違いです
>
>また、2月と書かれている場合は、E3は、2月16日ということです
>小の月のときは31日の列を削除しては無理でしょうか?

E3〜AJ3は、32列あるのですが、E3が16日で、大の月(31日まである月)の場合、
AJ3は何が入るのでしょうか?
小の月(30日の月や2月)の場合は、31日の列を削除というより、E3から横方向に
1日ずつもれなく1ヶ月分設定していただくということではいけませんか?
たとえば、2月の場合、E3が2/16、R3が3/1、AF3が3/15で、AG3〜AJ3までは空白
ということではいけませんでしょうか?

それでいいのであれば、転記先セルの行は、検索ではなく、計算で求められます
がいかがでしょうか?

【47001】Re:検索値を別シートへ転記
お礼  hiro  - 07/2/24(土) 19:34 -

引用なし
パスワード
   ▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>16日から翌月15日の間違いです
>>
>>また、2月と書かれている場合は、E3は、2月16日ということです
>>小の月のときは31日の列を削除しては無理でしょうか?
>
>E3〜AJ3は、32列あるのですが、E3が16日で、大の月(31日まである月)の場合、
>AJ3は何が入るのでしょうか?
すいません AI3のまちがいでした

>小の月(30日の月や2月)の場合は、31日の列を削除というより、E3から横方向に
>1日ずつもれなく1ヶ月分設定していただくということではいけませんか?
>たとえば、2月の場合、E3が2/16、R3が3/1、AF3が3/15で、AG3〜AJ3までは空白
>ということではいけませんでしょうか?

それで大丈夫です

>
>それでいいのであれば、転記先セルの行は、検索ではなく、計算で求められます
>がいかがでしょうか?

計算でできるのですか?

【47002】Re:検索値を別シートへ転記
発言  かみちゃん  - 07/2/24(土) 19:45 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>>それでいいのであれば、転記先セルの行は、検索ではなく、計算で求められます
>>がいかがでしょうか?
>
>計算でできるのですか?

Sheet1のE列は、Sheet2の2行目
Sheet1のF列は、Sheet2の7行目
Sheet1のG列は、Sheet2の12行目
・・・
ということでどの行に転記するかは計算できると思いませんか?

あと、気になるのでもう一度聞きますが、大阪が東京、名古屋と比べて最大転記可能数
が少ないのですが、いいのですよね?

【47004】Re:検索値を別シートへ転記
お礼  hiro  - 07/2/24(土) 20:27 -

引用なし
パスワード
   ▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>>それでいいのであれば、転記先セルの行は、検索ではなく、計算で求められます
>>>がいかがでしょうか?
>>
>>計算でできるのですか?
>
>Sheet1のE列は、Sheet2の2行目
>Sheet1のF列は、Sheet2の7行目
>Sheet1のG列は、Sheet2の12行目
>・・・
>ということでどの行に転記するかは計算できると思いませんか?
>
>あと、気になるのでもう一度聞きますが、大阪が東京、名古屋と比べて最大転記可能数
>が少ないのですが、いいのですよね?
はい 大阪はそれでokです
何度もすいません ありがとうございます

【47006】Re:検索値を別シートへ転記
発言  かみちゃん  - 07/2/24(土) 21:29 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>何度もすいません

「どの行に転記するかは計算できると思いませんか?」
についてはいかがでしょうか?

※あと、投稿種別「お礼」は、ありがたいのですが、解決した段階で選択していただいたほうがいいかもしれません。

【47008】Re:検索値を別シートへ転記
質問  hiro  - 07/2/24(土) 22:24 -

引用なし
パスワード
   ▼かみちゃん さん:
>「どの行に転記するかは計算できると思いませんか?」
>についてはいかがでしょうか?
>
すいません知識不足でよくわかりません

【47009】Re:検索値を別シートへ転記
発言  かみちゃん  - 07/2/24(土) 22:27 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>>「どの行に転記するかは計算できると思いませんか?」
>>についてはいかがでしょうか?
>>
>すいません知識不足でよくわかりません

どこがわからないでしょうか?
Sheet1のE(5)列は、Sheet2の2行目
Sheet1のF(6)列は、Sheet2の7行目
Sheet1のG(7)列は、Sheet2の12行目
Sheet1列右へ行くごとにSheet2の転記先が5行ずつ下へ行くという規則性があると思いませんか?

この考え方がわからないと、いくらコードを提示しても理解は難しいと思います。

【47024】Re:検索値を別シートへ転記
回答  かみちゃん  - 07/2/25(日) 16:29 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>16日東の人はF2:H6 名の人はI2:K6 大の人はL2:L6 休日の人はM2:P6に表示させた
>く思います (シート1の "出"の人も休日に表示させる)

いろいろ伺った結果、以下のような感じでできると思います。
サンプルデータを作って検証済みです。
Sub Sample()
 Dim rngList As Range
 Dim c As Range
 Dim intCol As Integer
 Dim cnt1 As Integer
 Dim cnt2 As Integer
 Dim cnt3 As Integer
 Dim cnt4 As Integer
 
 With Sheets("Sheet1").Range("D5")
  Set rngList = .Resize(.Offset(Rows.Count - .Row).End(xlUp).Row - .Row + 1) _
   .Offset(, 1).Resize(, 31)
 End With
 
 For intCol = 1 To rngList.Columns.Count
  For Each c In rngList.Columns(intCol).Cells
   With Sheets("Sheet2").Range("F2").Offset((intCol - 1) * 5)
    Select Case c.Value
     Case "東"
      cnt1 = cnt1 + 1
      .Resize(5, 3).Cells(cnt1).Value = _
       Sheets("Sheet1").Cells(c.Row, 4).Value
     Case "名"
      cnt2 = cnt2 + 1
      .Offset(, 3).Resize(5, 3).Cells(cnt2).Value = _
       Sheets("Sheet1").Cells(c.Row, 4).Value
     Case "大"
      cnt3 = cnt3 + 1
      .Offset(, 6).Resize(5, 1).Cells(cnt3).Value = _
       Sheets("Sheet1").Cells(c.Row, 4).Value
     Case "休", "出"
      cnt4 = cnt4 + 1
      .Offset(, 7).Resize(5, 4).Cells(cnt4).Value = _
       Sheets("Sheet1").Cells(c.Row, 4).Value
    End Select
   End With
  Next
 Next
 MsgBox "終了しました"
End Sub

【47044】Re:検索値を別シートへ転記
お礼  hiro  - 07/2/26(月) 20:13 -

引用なし
パスワード
   かみちゃん さん
返事が遅れて申し訳ありません
色々考えてたのですが、検索が頭からはなれず 発想の転換ができませんでした
かみちゃんさんのコードでやってみると 思ったとおりに動いてくれました
でもおしゃるように理解できないところがあるので また勉強してみます
ありがとうございました

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