• ベストアンサー

どこから手を付けていいやら・・・

エクセルにて sheet1に A1     B1   C1 素材番号  素材名  価格 Sheet2に A1     B1   C1 作品名   作者   自己評価 Sheet3に 上記の要素を表?として B1 作品名 C1 作者 B5から縦方向に素材番号 C5から縦方向に素材名 D5から縦方向に価格 (これは雛形をつくり作者に記入してもらいました) sheet3には各々記入してもらったシートを 貼り付けこれらの要素をSheet1、2に まとめていくマクロを作りたいのですが 問題1。。Sheet2のB、C、D列は何行になるか分からない 問題2。。sheet1、2へは続けて値のみ貼り付けたい 変数を使ったループ処理にチャレンジしてみましたが データの最終行をあらわしかたが分からない、 コピー先の最終行がわからない。。。。で止まって しまいました(ToT) どうかご教授ください。  

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

説明順序が逆でわかり難いと思います。 下記のような希望ですね。 (1)B1 作品名 C1 作者 B5から縦方向に素材番号 C5から縦方向に素材名 D5から縦方向に価格 と言う 雛型のエクセルのシートを作った。 (2)多くの人に(1)の形式のシートにデータを入れてもらった。 (3)それをSheet3に張りつけてまとめる。 縦に張りつけるのですね。 その場合Sheet3上で、各人の作品名、作者はどうして探せば良いでしょうか(何を識別するものとすべきですか)。 「作品名」と言う語句のあるセルの横列セルにあるのですか。 (4)Sheet3のデータから、作品名と作者はSheet2にまとめて、上行から下行に詰めて名簿リストを作る(1人1行) (5)Sheet3のデータから、Sheet1のB列に素材番号を、C列に素材名を、D列に価格を縦にまとめて詰めて上行から下方行へ累積したい。 (プログラムの要領ポイント) 次に書きこむ行の行番号を変数として Sheet1用にj、Sheet2用にkなどを別の変数として使い それぞれ明細開始行を初期値としてセットします。 1行書きこむごとにSheet1はJ=J+1やSheet2はK=K+1して行けば、隙間なく詰めてリストが作成できます。 (Sheet3の最終行の察知) Sheet3の貼り付ける場合、隙間行が出来そうなので、 最後行にそれ以前には現れない語句(例えばOWARIなど)をストッパーとして入れて、それをいつも1行下を見るとき、判別察知して、見つかった時に処理を終了してはどうでしょう。 Sheet1、Sheet2の最終行は、勿論Sheet3の最終行により決まります。

yanyanyanyan
質問者

お礼

「OWARI」を付ける・・・ なるほど目から鱗の考えでした。 奥が深い・・・ ありがとうございました。

その他の回答 (1)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

最終行を得たいなら、書き方は色々あると思いますがこんな感じでも出来ます。 Sub Test() Dim LRow As Long  LRow = Worksheets("Sheet2").Range("A65536").End(xlUp).Row  MsgBox "最終行は " & LRow & "行目" End Sub

yanyanyanyan
質問者

お礼

遅くなりましたが ありがとうございました。 また一から勉強しなおしています。 マクロは試行錯誤の繰り返し なんですね。答えもひとつでは ないし。。。

関連するQ&A