- 締切済み
エクセル作成データーを自動で文字を返して反映
エクセルシートに作成したシートのデーターを、別シートに自動で反映させてたいと思っております。 該当する文字を入力するだけでマクロや関数を使用してその下にある数字を全てコピーする事はできますか。 添付シートを参照して頂ければと思いますが、シート1の元データーから、別シート2に文字を返して、その下にある文字が自動で反映できるような仕組みを構築したいと考えております。 添付は抜粋で元データーは400件以上ある為に、コピー&ペースト作業や=でsheet 1 から引っ張ってくるには時間がかなりかかっていて困っております。 そこで、品目だけ入力すればその下の数字が自動で反映出来ればと思っております。 トラックの搬入時間管理の為、タイムリーな処理が必要な為、お知恵をお借りできればと思いいます。 お忙しい所申し訳ありませんが、どなたかお力添えをよろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- root8110
- ベストアンサー率30% (6/20)
すっかり忘れていました。すみません。 とりあえずSheet2のセルM1かM15を変更したらSheet1のA1:KT800から探してコピーするように作ってみました。 以下のマクロを、標準モジュールではなくSheet2のコードに入力してください。 Private Sub Worksheet_Change(ByVal Target As Range) 'セルM1かM15が変更された時だけ実行する '他の条件で実行したいときはここを書き変えてください If Target.Address = "$M$1" Or Target.Address = "$M$15" Then CopyData Target End If End Sub Sub CopyData(t As Range) '対象のセルに入力がなければ終了する If t = "" Then Exit Sub 'Sheet1から検索して c にセットする Dim c As Range Set c = Worksheets("Sheet1").Range("A1:KT800").Find(t, LookAt:=xlWhole) 'Sheet1に品目がなかった時はメッセージを表示して終了する If c Is Nothing Then t.Offset(2, -12).Resize(9, 18).Clear t.Offset(2, 0) = t & "はありません" Exit Sub End If 'データをコピーする c.Offset(2, -12).Resize(9, 18).Copy t.Offset(2, -12) End Sub これでどうでしょう
- root8110
- ベストアンサー率30% (6/20)
・各セルのアドレスが分からないと回答し辛い。 とりあえず「りんご」のアドレスが分かればいいかと。 ・元データで、りんご以外の品目はどこに入力されていますか 全部同じ列か同じ行でないと難しいかも ・コピーする範囲は品目から見て-10列目から+4列目、+2行目から+9行目と思っていいのか あと、文字色までコピーしてほしいなら関数ではムリでマクロになると思います。
- shintaro-2
- ベストアンサー率36% (2266/6245)
シート2の各セルが、シート2の”りんご”というデータが入ったセルのデータを見て、 対応するシートの対応するセルのデータを表示するようにすることは可能ですが、 他のシート構成とかが一切不明ですので 一般論として エクセルでお望みのことを実現する方法は一つではありません。 一つの方法として、 まず、シート1の”りんご”というのと表のデータをひも付けします。 範囲名として”りんご”とつけてしまえば良いでしょう。 シート2では indirect関数で”りんご”というデータのセル内容を元に対応する 表を表示させるようなことを考えれば良いのでは?
- aokii
- ベストアンサー率23% (5210/22062)
A1セルで = をクリックしてから、作成したシートのA1セルをクリックし、Enterキーを押してから、作成したシートのA1セルを上下左右にドラッグコピーしてみてください。
補足
やはりマクロでないと出来ないんですね。ご回答ありがとうございます。 元データーは、シート1 縦800セル 横305セルの中にランダムに400件ほど入力されております。 またコピーする範囲は、-12列目から+5列目、+2行目から+10行目となっております。 全てが同じ列に配列されている訳ではなく、ランダムとなっております。 色の反映もしたいです。 お忙しい所申し訳ありませんが、引き継きよろしくお願いいたします。