- ベストアンサー
結果登録シートから別シートのリストへ登録結果を転記
結果登録シートから別シートのリストへ登録結果を転記したい。リストは20000件あり 毎日100件程度結果登録する。 結果登録シート 一連番号 名前 結果 実施日 1 いとう 済 9月10日 ←A5から 100件ほど登録 リストシート 一連番号 名前 結果 実施日 1 いとう ←A10から 20000件 2 さとう 20000 すとう よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
結果登録NOと言う言葉が初めて出てきましたが、意味が良くわからないので詳しく教えていただけますか? リストシートのデータに日付が入ったら結果登録シートに単純にコピーするのでは無く、コピーする場所が決まっていると言う事ですか? 私がNo.3でお聞きした、 2. リストシートのデータは名前、結果、実施日の3つだけですか?=>回答「3つだけです」 とは矛盾してしまう気がします。 あるいは、リストシートへのデータの入力は連続している訳では無く、飛び飛びになると言う事ですか?
その他の回答 (4)
- nonamochi
- ベストアンサー率62% (228/365)
もう少し確認です。 1. 結果登録シートはリストシートと同じブックですか?それとも違うブックですか? 2. 毎日コピーを結果登録シートに作る事になるわけですが、前日の結果登録シートはどうなりますか?毎日上書きですか? 例えば100件データがあった場合、1件目は手作業で日付入力、残りの99件は貼り付けで一気に入力と言う事になりますが、この場合「日付のセルに入力があったらコピーを実施」には対応しきれないかと思われます。 私がやる場合には日付の入力が終わったらボタンを押してコピーを開始になります。
お礼
ありがとうございます。
補足
ありがとうございます。 1.同一ブックです。 2.sheet「登録結果」,sheet「リスト」の2種類だけです。 結果登録sheetからリストsheetへ済・月日が該当するNOに入力されるイメージです。 3.結果登録NOはランダムで入力。よって,10 15 16 7 8 20 30となることもあります。
- nonamochi
- ベストアンサー率62% (228/365)
「日付を入力したら」と言う部分に若干の難しさがあるかもしれませんがエクセルで行けます。 どちらかと言うと、データの入力が完了した時点でボタンを押して処理をさせた方がきちんと処理できそうです。 現在の説明内容では不明な部分があるため、詳細について教えてください。 1. リストシートの2万件が増える事は無いですか? 2. リストシートのデータは名前、結果、実施日の3つだけですか? 3. 結果登録シートには毎日100件登録とありますが、リストシートに毎日100件程の日付入力があると言う事ですか? 4. 実施日は手入力ですか?
お礼
回答ありがとうございます。 1.ありません。 2.3つだけです 3.はいそうです。 4.手入力です。1つ入力したらコピー貼付です。 よろしくお願いいたします。
- 007MUKADE
- ベストアンサー率41% (286/694)
業務の内容や データーの数から思うと・・・ ExcelではなくてAccess をお薦めします。
お礼
回答ありがとうごさいました。 EXCEL VBAでお願いできませんか。
- nonamochi
- ベストアンサー率62% (228/365)
おはようございます 結果と実施日をキーにしてデータを抽出し、それを他のシートにコピーすると言う事でよろしいでしょうか。 若干手間がかかりますが、一番単純な方法はフィルタです。 フィルタで絞り込んで、表示された結果をコピーしてください。 キーの設定、コピー作業、連番の振り直しは手作業になります。 手作業を無しにしたい場合にはVBAによるプログラム化が必要です。
お礼
早速の回答ありがとうございます。 手作業でなく結果・月日を入力したら全て結果登録までお願いしたいです。VBAでお願いいたします。
お礼
ありがとうございます。 いろいろ検索のうえマクロが完成しました。補足入力欄に作成したマクロを入力しました。
補足
Sub 一連番号からデータ把握() For n = 1 To 20000 If Sheets("結果登録").Cells(n + 4, 1) = "" Then GoTo 1 Sheets("結果登録").Cells(n + 4, 2) = Application.VLookup(Sheets("結果登録").Cells(n + 4, 1), Sheets("リスト").Range("A10:Z20000"), 2, False) Sheets("結果登録").Cells(n + 4, 3) = Application.VLookup(Sheets("結果登録").Cells(n + 4, 1), Sheets("リスト").Range("A10:Z20000"), 3, False) Sheets("結果登録").Cells(n + 4, 4) = Application.VLookup(Sheets("結果登録").Cells(n + 4, 1), Sheets("リスト").Range("A10:Z20000"), 4, False) Sheets("結果登録").Cells(n + 4, 5) = Application.VLookup(Sheets("結果登録").Cells(n + 4, 1), Sheets("リスト").Range("A10:Z20000"), 5, False) Sheets("結果登録").Cells(n + 4, 6) = Application.VLookup(Sheets("結果登録").Cells(n + 4, 1), Sheets("リスト").Range("A10:Z20000"), 6, False) Sheets("結果登録").Cells(n + 4, 7) = Application.VLookup(Sheets("結果登録").Cells(n + 4, 1), Sheets("リスト").Range("A10:AZ2000"), 7, False) Sheets("結果登録").Cells(n + 4, 8) = Application.VLookup(Sheets("結果登録").Cells(n + 4, 1), Sheets("リスト").Range("A10:AZ2000"), 8, False) If IsError(Application.VLookup(Sheets("結果登録").Cells(n + 4, 1), Sheets("リスト").Range("A10:Z20000"), 2, False)) Then Sheets("結果登録").Cells(n + 4, 2) = "該当なし" End If If IsError(Application.VLookup(Sheets("結果登録").Cells(n + 4, 1), Sheets("リスト").Range("A10:Z20000"), 3, False)) Then Sheets("結果登録").Cells(n + 4, 3) = "該当なし" End If If IsError(Application.VLookup(Sheets("結果登録").Cells(n + 4, 1), Sheets("リスト").Range("A10:Z20000"), 4, False)) Then Sheets("結果登録").Cells(n + 4, 4) = "該当なし" End If If IsError(Application.VLookup(Sheets("結果登録").Cells(n + 4, 1), Sheets("リスト").Range("A10:Z20000"), 5, False)) Then Sheets("結果登録").Cells(n + 4, 5) = "該当なし" End If If IsError(Application.VLookup(Sheets("結果登録").Cells(n + 4, 1), Sheets("リスト").Range("A10:Z20000"), 6, False)) Then Sheets("結果登録").Cells(n + 4, 6) = "該当なし" End If If IsError(Application.VLookup(Sheets("結果登録").Cells(n + 4, 1), Sheets("リスト").Range("A10:Z20000"), 7, False)) Then Sheets("結果登録").Cells(n + 4, 7) = "該当なし" End If If IsError(Application.VLookup(Sheets("結果登録").Cells(n + 4, 1), Sheets("リスト").Range("A10:Z20000"), 8, False)) Then Sheets("結果登録").Cells(n + 4, 8) = "該当なし" End If Next n 1 Sheets("結果登録").Cells(1, 18) = "=COUNTIF(B5:B20000,""該当なし"")" If Sheets("結果登録").Cells(1, 18) > 0 Then MsgBox "一連番号に誤入力があります。再度入力しマクロ実行願います!!" & Sheets("結果登録").Cells(1, 18) & "個" End If Sheets("結果登録").Cells(1, 19) = "=COUNTA(G5:G20000)" If Sheets("結果登録").Cells(1, 19) > 0 Then MsgBox "既に結果登録済の番号があります!! " & Sheets("結果登録").Cells(1, 19) & "個" End If Sheets("結果登録").Select Range("I4").Select End Sub Sub 一連番号へ結果登録() For n = 1 To 20000 If Sheets("リスト").Cells(n + 9, 1) = "" Then GoTo 1 If Sheets("リスト").Cells(n + 9, 7) = "" Then Sheets("リスト").Cells(n + 9, 7) = Application.VLookup(Sheets("リスト").Cells(n + 9, 1), Sheets("結果登録").Range("$A$5:$Z$2000"), 7, False) End If If IsError(Sheets("リスト").Cells(n + 9, 7)) Then Sheets("リスト").Cells(n + 9, 7) = "" End If If Sheets("リスト").Cells(n + 9, 8) = "" Then Sheets("リスト").Cells(n + 9, 8) = Application.VLookup(Sheets("リスト").Cells(n + 9, 1), Sheets("結果登録").Range("$A$5:$Z$2000"), 8, False) End If If IsError(Sheets("リスト").Cells(n + 9, 8)) Then Sheets("リスト").Cells(n + 9, 8) = "" End If Next n 1 MsgBox "結果登録終了しました。" End Sub