Excel VBA質問箱 IV

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

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


1924 / 13645 ツリー ←次へ | 前へ→

【70878】条件に合うセルを含む行を他のシートにコピー fuji 12/1/12(木) 10:32 質問[未読]
【70880】Re:条件に合うセルを含む行を他のシートに... Jaka 12/1/12(木) 10:57 発言[未読]
【70882】Re:条件に合うセルを含む行を他のシートに... fuji 12/1/12(木) 14:07 お礼[未読]
【70895】Re:条件に合うセルを含む行を他のシートに... Jaka 12/1/13(金) 9:30 発言[未読]
【70989】Re:条件に合うセルを含む行を他のシートに... fuji 12/1/24(火) 12:27 質問[未読]
【71006】Re:条件に合うセルを含む行を他のシートに... Jaka 12/1/25(水) 17:21 発言[未読]
【71014】Re:条件に合うセルを含む行を他のシートに... fuji 12/1/26(木) 9:20 発言[未読]
【71016】Re:条件に合うセルを含む行を他のシートに... Jaka 12/1/26(木) 11:47 発言[未読]
【71017】Re:条件に合うセルを含む行を他のシートに... fuji 12/1/26(木) 12:07 発言[未読]
【71025】Re:条件に合うセルを含む行を他のシートに... SS 12/1/26(木) 15:32 発言[未読]
【71027】Re:条件に合うセルを含む行を他のシートに... fuji 12/1/26(木) 18:13 発言[未読]

【70878】条件に合うセルを含む行を他のシートにコ...
質問  fuji  - 12/1/12(木) 10:32 -

引用なし
パスワード
   マクロ初心者でどうしたらよいかわかりません。。
契約者の工程管理で次のような機能をもたせたいのですがどのようにしたらいいでしょうか。
名前     作業1    作業2      作業3    ・・ 備考
   作業予定日 作業日  作業日  作業予定日 作業日
山田  1/1    2/1    2/5    3/5    3/10 
鈴木  2/1    2/5    6/5    7/1    7/5

このような表があるとします。
各作業には作業予定日があるものとないものがあります。作業予定日は日付(実際は西暦も表示)が入力されていて、作業をしたら作業日に入力していきます。
このとき、「作業予定日を過ぎているのに作業日が空欄の人」が別のシートに自動でコピーされる、ということは可能でしょうか。
また、上のようなシートが3つ(例えばABC)あり、貼り付け先のシートは1つで、ABCごとに貼り付ける場所は固めたいのです。

苦し紛れに、今は、作業予定日が過ぎたら「作業日」に「確認」という文字がでるようにIF関数を入れてあります。「確認」という字がある行をコピーする というやり方になるのでしょうか。それともそのようなことをしなくてもマクロで可能なのでしょうか。
わかるかたがいらっしゃいましたらよろしくお願い致します。

【70880】Re:条件に合うセルを含む行を他のシート...
発言  Jaka  - 12/1/12(木) 10:57 -

引用なし
パスワード
   ▼fuji さん:
>苦し紛れに、今は、作業予定日が過ぎたら「作業日」に「確認」という文字がでるようにIF関数を入れてあります。「確認」という字がある行をコピーする というやり方になるのでしょうか。

マクロでも思いついたのがこの方法なので、これを手動でやるかマクロでやるかの違いだけでしょうね。
Dictionaryが好きな方のいるけれど、私はもっぱらこれと同じような方法しかとらない。

【70882】Re:条件に合うセルを含む行を他のシート...
お礼  fuji  - 12/1/12(木) 14:07 -

引用なし
パスワード
   ▼Jaka さん:
>▼fuji さん:
>>苦し紛れに、今は、作業予定日が過ぎたら「作業日」に「確認」という文字がでるようにIF関数を入れてあります。「確認」という字がある行をコピーする というやり方になるのでしょうか。
>
>マクロでも思いついたのがこの方法なので、これを手動でやるかマクロでやるかの違いだけでしょうね。
>Dictionaryが好きな方のいるけれど、私はもっぱらこれと同じような方法しかとらない。

ありがとうございます。
手動ではなくできればマクロで行いたいのですが
いかんせん初心者なもので書き方がわからず困惑しております・・・

【70895】Re:条件に合うセルを含む行を他のシート...
発言  Jaka  - 12/1/13(金) 9:30 -

引用なし
パスワード
   ▼fuji さん:
>手動ではなくできればマクロで行いたいのですが
>いかんせん初心者なもので書き方がわからず困惑しております・・・

取り合えずマクロ記録と言うものからはじめてみては。
後は記録したマクロをベースにして汎用的に使えるように直すとかが初めなじゃないかと。

※先ほど間違って消してしまったので再UP、内容は前回と全く同じ。

【70989】Re:条件に合うセルを含む行を他のシート...
質問  fuji  - 12/1/24(火) 12:27 -

引用なし
パスワード
   「要確認」というセルを含む行があれば、その行を「要確認一覧」という別シートにコピーする方法で考え中ですがエラーが発生してしまいます。

また、検査範囲は数行にわたるのですが、同じ事を行数分繰り返すしかないのでしょうか・・


Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2012/1/13 ユーザー名 :

Range("H22").Select
For i = 1 To 7
  a = ActiveCell.Value
  If a = "要確認" Then
    c = ActiveCell.Row
    ActiveCell.FormulaR1C1 = c
    Exit For
  End If
  ActiveCell.Offset(0, 1).Activate
Next i
Rows(CStr(c)).Copy Sheets("要確認一覧").Range("B4")←この行が黄色くなります
    
    
End Sub


>マクロ初心者でどうしたらよいかわかりません。。
>契約者の工程管理で次のような機能をもたせたいのですがどのようにしたらいいでしょうか。
>名前     作業1    作業2      作業3    ・・ 備考
>   作業予定日 作業日  作業日  作業予定日 作業日
>山田  1/1    2/1    2/5    3/5    3/10 
>鈴木  2/1    2/5    6/5    7/1    7/5
>
>このような表があるとします。
>各作業には作業予定日があるものとないものがあります。作業予定日は日付(実際は西暦も表示)が入力されていて、作業をしたら作業日に入力していきます。
>このとき、「作業予定日を過ぎているのに作業日が空欄の人」が別のシートに自動でコピーされる、ということは可能でしょうか。
>また、上のようなシートが3つ(例えばABC)あり、貼り付け先のシートは1つで、ABCごとに貼り付ける場所は固めたいのです。
>
>苦し紛れに、今は、作業予定日が過ぎたら「作業日」に「確認」という文字がでるようにIF関数を入れてあります。「確認」という字がある行をコピーする というやり方になるのでしょうか。それともそのようなことをしなくてもマクロで可能なのでしょうか。
>わかるかたがいらっしゃいましたらよろしくお願い致します。

【71006】Re:条件に合うセルを含む行を他のシート...
発言  Jaka  - 12/1/25(水) 17:21 -

引用なし
パスワード
   なかなか返信付かなかったみたいですね。
もう終わっちゃったかな?

・コピー領域と貼り付け領域の形が違うため、情報を貼り付ける事ができません。

ってでませんか?
1行のセルの数とB4から右側のセルの数が違うからですね。
その辺を直してみたらどうですか?

>また、検査範囲は数行にわたるのですが、同じ事を行数分繰り返すしかないのでしょうか・・
だから、オートフィルタをやって見たらとかいたのだけれど...。

>Rows(CStr(c)).
なぜわざわざ文字にするのかな?
行は1行2行とかの数値なんだけど。

【71014】Re:条件に合うセルを含む行を他のシート...
発言  fuji  - 12/1/26(木) 9:20 -

引用なし
パスワード
   ▼Jaka さん:
わからなかったので似ている他の作業のマクロを使ったのですが
直しきれずという感じです。
ご指摘いただいた点もどうなおしたらいいかわからないので
まだまだ勉強しないといけないようです・・

【71016】Re:条件に合うセルを含む行を他のシート...
発言  Jaka  - 12/1/26(木) 11:47 -

引用なし
パスワード
   今まで、某列に 「要確認」 と言う文字があった行をコピーするものだと思っていたのだけれど、なんか違うようですね。
でしたら、作業列を使った方が簡単なような気がします。

備考の隣の列に例えばG列だとすると、

=MATCH("確認",A2:F2,0)>0

といれ下にフィル。
後はオートフィルタでTRUEを抽出してコピペでもすればいいんじゃないかと。
(この辺をマクロ記録すればマクロとして利用できますし。)
内容が良く解ってませんけど。

【71017】Re:条件に合うセルを含む行を他のシート...
発言  fuji  - 12/1/26(木) 12:07 -

引用なし
パスワード
   ▼Jaka さん:
ありがとうございます。

>今まで、某列に 「要確認」 と言う文字があった行をコピーするものだと思っていたのだけれど、なんか違うようですね。

「某列」が複数あり、どこか1つでも「要確認」のセルがあればその行をコピー
という感じです。

>でしたら、作業列を使った方が簡単なような気がします。
>
>備考の隣の列に例えばG列だとすると、
>
>=MATCH("確認",A2:F2,0)>0
>
>といれ下にフィル。
>後はオートフィルタでTRUEを抽出してコピペでもすればいいんじゃないかと。
>(この辺をマクロ記録すればマクロとして利用できますし。)
>内容が良く解ってませんけど。

ありがとうございます。
知識がなくわかりませんが、試してみます。
今日は他の作業で多忙なため後日になりそうですが・・

【71025】Re:条件に合うセルを含む行を他のシート...
発言  SS  - 12/1/26(木) 15:32 -

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

あまりきれいではありませんが、こんなものかなと作ってみました。
よろしければ確認してみて下さい。
Option Explicit

Sub test()
  Dim i As Long, j As Long, k As Long, m As Long, n As Long
  Dim R1 As Long, C1 As Long
  Dim Sagyou As Variant, check As Variant
  Dim WS1 As Worksheet, WS2 As Worksheet
  
  Set WS1 = ThisWorkbook.Worksheets("Sheet1")
  Set WS2 = ThisWorkbook.Worksheets("Sheet2")
  
  m = 3 'データ開始行
  n = WS1.Cells(m, 1).End(xlDown).Row 'データ最終行
  
  '作業予定日がある列を確認
  k = 0
  ReDim Sagyou(1 To 1)
  For j = 2 To WS1.Range("B2").End(xlToRight).Column
    If WS1.Cells(2, j).Value = "作業予定日" Then
      k = k + 1
      ReDim Preserve Sagyou(1 To k)
      Sagyou(k) = j
    End If
  Next j
  C1 = k
  '名簿がある業を確認
  R1 = n - m + 2
  ReDim check(1 To R1, 1 To C1)
  
  For j = 1 To C1
    check(1, j) = WS1.Cells(1, Sagyou(j)).Value
    For i = m To n
      If WS1.Cells(i, Sagyou(j) + 1).Value = "" Then
        If WS1.Cells(i, Sagyou(j)).Value < Date Then
          check(i - m + 2, j) = WS1.Cells(i, 1).Value
        End If
      End If
    Next i
  Next j
  WS2.Range("B1").Resize(R1, C1) = check
  Set WS1 = Nothing
  Set WS2 = Nothing
End Sub

【71027】Re:条件に合うセルを含む行を他のシート...
発言  fuji  - 12/1/26(木) 18:13 -

引用なし
パスワード
   ▼SS さん:
>▼fuji さん:
>
>あまりきれいではありませんが、こんなものかなと作ってみました。
>よろしければ確認してみて下さい。

ありがとうございます。
他の作業で多忙になってしまったので
落ち着いたら確認させていただきます。

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