[[20210913115543]] 『入力されたシート1をシート2で一覧表にしたい』(まも) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『入力されたシート1をシート2で一覧表にしたい』(まも)

1.シート1に作られた300行ある表にランダムに必要事項が入力されます。
2.入力された行順にシート2で一覧表にしたい。

※ランダムに入力されるので、一覧表では空白を詰めて入力された順番に表示させたい

※シート1で空欄だったところが新たに入力された場合、シート2で一覧になっているデータの最後から表示されてほしい(新たに入力されたデータが追加されるイメージ)

関数などいろいろ試しましたが、どうしてもうまくいきません。
教えていただけたら助かります。
よろしくお願いいたします。

< 使用 Excel:Office365、使用 OS:Windows10 >


関数では難しいですね。
マクロ(イベントプロシジャ)ということになるでしょうけど、
いろいろ論点はありますよ。
・取消があったとき、転記後のどのセルと見分けがつくのかとか、
・一行に一セルだけならよいが、複数セルがあったとき、一行の入力の終わりをどう判定するか
・一行の中のセルを、一度ではなく、何回かに分けて入力などということもあるでしょう。
 例えば、過去の修正とか。これをどう考えるか。等々

必要性はあるんでしょうけど、厳密に入力順が不可避なのでしょうか。
何か別の方策を考えたほうがいいような気がします。
(例えば、別シートに対応するセルの操作時刻を書き込むとか)
他の方の回答をお待ちください。

(γ) 2021/09/13(月) 12:26


 Private Sub Worksheet_Change(ByVal Target As Range)
  Dim inputSheet As Worksheet
  On Error Resume Next
  Set inputSheet = Worksheets(ActiveSheet.Index + 1)
  On Error GoTo 0
  If inputSheet Is Nothing Then
   Set inputSheet = Worksheets.Add(after:=ActiveSheet)
   Target.Parent.Activate
  End If
  If Len(Target.Value) > 0 Then
   inputSheet.Cells(Rows.Count, "A").End(xlUp).Offset(1).Value = Target.Value
  End If
 End Sub

いろいろ問題点はありそうですがまず体験してみましょう。
シートモジュールにこれを貼りつけます。
右隣のシートのA列最終行の次の行に入力内容が表示されます。
(めざめるパワー) 2021/09/13(月) 12:53


γさん、素晴らしいですね。そこまでさっと思いつくのですね。

>・取消があったとき、転記後のどのセルと見分けがつくのかとか、
⇒ 基本的には「取り消し」はできないことになっているので大丈夫だとふんでいます。

>・一行に一セルだけならよいが、複数セルがあったとき、一行の入力の終わりをどう判定するか
⇒書き忘れていました。1行に5項目、F列からJ列です。

>一行の中のセルを、一度ではなく、何回かに分けて入力などということもあるでしょう。例えば、過去の修正とか。これをどう考えるか。等々
⇒一度ではなく何回かに分けて入力されていたとしても、5項目埋まらない限り、その先のフローへは進まないので大丈夫なのです。

が、おっしゃる通り、こうなった場合に入力順で良いのか?などなど、考えることはまだありそうですね。毎日チェックしながら数か月続けなくてはならないので、出来るだけ手間も間違いもないようにしたいと思っていたのですが…難しいかもしれないですね。

めざめるパワーさん、ありがとうございます!とりあえずやってみよう!と試みましたが…
なぜでしょうか、動きませんで…。
でもきっと私のやり方が悪いんです。時間を見てまたやってみます!

おふたりとも、ありがたいです(涙)

引き続き、良い案がありましたら教えていただけたらありがたいです。
(まも) 2021/09/13(月) 13:46


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.