![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
シート1のA列に 1A 1B 2A 2B 3A 3Bという数値が不規則に入力されている
シート1のB列に 斉藤 佐藤 鈴木 等の名前
シート1のC列に 時間
シート1のD列に 休
A列を検索して1A表示ありD列で”休”以外のB列の名前とC列の時間をシート2の1A行のB・C・D・・セルに時間基準で連続してコピーする
シート1のデータは300行くらいです
シート1
A B C D
1a 斉藤 8:20 休
1b 佐藤 9:00
2a 鈴木 9:10
1b 大田 9:20
1a 加藤 8:40
2a 青木 8:30
1a 青山 8:40
3a 中山 8:30 休
3b 高橋 9:20
シート2
A B C D E
1a 加藤 青山
時間 8:40 8;40
1b 佐藤 大田
時間 9:00 9:20
2a 青木 鈴木
時間 8:30 9:10
2b
時間
3a
時間
3b 高橋
時間 9:20
という表を手作業で100件ほど毎日やっていますが効率と正確性のためマクロを試していますがうまく出来ません。If Then Do Loop など見よう見まねですがうまく行きません。どなたか助けてください。よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
No.1です。
>シート2の最上行にA列空白のB列名前が連続でコピーされてしまいます
前回のコードは消去し、↓のコードに変更してみてください。
(エラー処理を少し加えています)
Sub Sample2()
Dim i As Long, lastRow As Long, lastCol As Long
Dim c As Range, wS As Worksheet
Set wS = Worksheets("Sheet2")
lastRow = wS.Cells(Rows.Count, "A").End(xlUp).Row
lastCol = wS.UsedRange.Columns.Count
Application.ScreenUpdating = False
If lastCol > 1 Then '//←念のため//
Range(wS.Cells(1, "B"), wS.Cells(lastRow, lastCol)).ClearContents
End If
With Worksheets("Sheet1")
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
If .Cells(i, "A") <> "" Then '//←追加★//
If .Cells(i, "D") <> "休" Then
Set c = wS.Range("A:A").Find(what:=.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
lastCol = wS.Cells(c.Row, Columns.Count).End(xlToLeft).Column + 1
.Cells(i, "B").Copy wS.Cells(c.Row, lastCol)
.Cells(i, "C").Copy wS.Cells(c.Row + 1, lastCol)
End If
End If '//←追加★//
Next i
End With
wS.Activate
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
今度はどうでしょうか?
※ 未検証なので、お望み通りにならなかったらごめんなさい。m(_ _)m
本当に有難うございました。見事に出来ました。有難うございました。
各コードの意味は勉強します。これで処理が大幅に楽になり正確になりました。感謝です。
No.2
- 回答日時:
Sheet1 において、
1.列Fを作業列として、次式を入力したセル F1 を下方にズズーッとオートフィル
 ̄ ̄ =HOUR(C1)*100+MINUTE(C1)+ROW()/1000
Sheet2 において、
2.下記の左端に示す各セルにそれぞれの右側の式を入力して、範囲B1:B2 を右隣にオートフィル
 ̄ ̄B1: =IFERROR(INDEX(Sheet1!$B$1:$B$350,MATCH(SMALL(IF((Sheet1!$A$1:$A$350=$A1)*(Sheet1!$D$1:$D$350<>"休"),Sheet1!$F$1:$F$350,""),COLUMN(A1)),Sheet1!$F$1:$F$350,0)),"")
 ̄ ̄B2: =IFERROR(INDEX(Sheet1!$C$1:$C$350,MATCH(SMALL(IF((Sheet1!$A$1:$A$350=$A1)*(Sheet1!$D$1:$D$350<>"休"),Sheet1!$F$1:$F$350,""),COLUMN(A1)),Sheet1!$F$1:$F$350,0)),"")
 ̄ ̄【お断り】上式は必ず配列数式として入力のこと
3.範囲 B1:C2 を下方にズズーッとオートフィル
![「シート1の情報を複数条件で検索し該当情報」の回答画像2](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/b/298588_59e381a913cb5/M.jpg)
No.1
- 回答日時:
こんばんは!
↓の画像のような配置になっているとします。(Sheet1の1行目は項目行)
尚、Sheet2のA列は入力済みだという前提です。
標準モジュールにしてください。
Sub Sample1()
Dim i As Long, lastRow As Long, lastCol As Long
Dim c As Range, wS As Worksheet
Set wS = Worksheets("Sheet2")
lastRow = wS.Cells(Rows.Count, "A").End(xlUp).Row
lastCol = wS.UsedRange.Columns.Count
Application.ScreenUpdating = False
Range(wS.Cells(1, "B"), wS.Cells(lastRow, lastCol)).ClearContents
With Worksheets("Sheet1")
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
If .Cells(i, "D") <> "休" Then
Set c = wS.Range("A:A").Find(what:=.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
lastCol = wS.Cells(c.Row, Columns.Count).End(xlToLeft).Column + 1
.Cells(i, "B").Copy wS.Cells(c.Row, lastCol)
.Cells(i, "C").Copy wS.Cells(c.Row + 1, lastCol)
End If
Next i
End With
wS.Activate
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
こんな感じではどうでしょうか?m(_ _)m
![「シート1の情報を複数条件で検索し該当情報」の回答画像1](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/4/667667_59e33ec01fbaa/M.jpg)
早速に有難うございました
出来ました! 感激です 有難うございました
シート1A列に空白のセルが存在していて、シート2の最上行にA列空白のB列名前が連続でコピーされてしまいます
ずうずうしいですがこの解決法も教えていただけると幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCEL 関数を教えてください。(A列の同じ値が複数ある場合vlookupで出来ますか) 4 2022/12/07 20:54
- Visual Basic(VBA) 【ExcelVBA】動的にボタン、ボタン名を生成できますか? 7 2022/04/08 12:54
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Excel(エクセル) Excelで残業を1月、2月、3月とシートに分けて記録してるのですが、30時間超えた人は別シート(名 4 2022/11/04 06:34
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで「ページレイアウト...
-
エクセルの数式バーのフォント...
-
2列に入っているデータを1列...
-
【Excel】別シートから条件に合...
-
EXCELの散布図で日付が1900年に...
-
エクセルをエクセレントに究める
-
F9キーについて。
-
Excelの数式について教えてくだ...
-
数字入力後他の文字等が表示さ...
-
Excelセルを跨いで合計を出す方法
-
計算能力
-
【ExcelVBA】ダブルクォーテー...
-
エクセルのツールバーから数値...
-
エクセル関数を使って
-
エクセル シート表示
-
エクセルでファイルの最終更新...
-
Excel 2019 [オプション]の[リボンのユ...
-
特定の文字列を含む、住所を抽...
-
祝日と土曜、日曜の合計をカウ...
-
Excel分数の表示について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報