マンガでよめる痔のこと・薬のこと

Excelでできるかわからないのですが教えてください。
一つのシートに日付と記入項目10項目(数値)を入力する
シートを作成しその作成したシートの日付を基準に
別に作った集計用シートにデータを写し保存することは
できるでしょうか?
入力シートは入力しては消して次の日にまた新たなデータを入力してと
入力するためだけの専用シートにしたいです。
また集計シートは各日にち毎のデータを集計するシートにしたいと
思っています。
いろいろ調べたのですが良くわからないので
アドバイスいただけませんでしょうか。
よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

#1です。



> 一つのシートの日付の一致する行にデータを入れることができないかと思っています。

1)入力用シートに日付と記入項目10項目(数値)がある
2)別ブックの集計用シートには既に日付が入っている
3)入力用シートの日付と集計用シートの日付がマッチする行に、入力用シートの10項目(数値)を転記する?

こんな風に想像しましたが、その通りだとしても疑問が残ります。
なぜ集計用シートに元から日付あるのか、同じ日付の入力用シートがあるのか(あった場合の処理は上書きなのか加算なのか)、入力用シートの日付が集計用シートになかったらどうするのか、、、等など。

マクロ(VBA)は細かいシートの構造が解らないと書けないんです。
こちらは質問文章から想像で組みますので、質問者さんが自分の環境に合わせて修正出来る程度の知識を持っていないと不毛なやり取りを重ねる事になります。
「百聞は一見にしかず」と言いますが、逆に言うなら「一見」出来ない以上「百聞」くらい細かく説明が無いとお互い通じないのです。

失礼ながら、先の質問者さんへ書いたマクロをテストデータを作って動かせるくらいのレベルはお持ちでしょうか?
一応、想像だけで書きましたが必要に応じて修正して下さい。

新規ブック、Book1、Sheet1の A1:D1 に
2006/1/10  hoge1  hoge2  hoge3

新規ブック、Book2 の A1:A365 に 2006/1/1 ~ 2006/12/31 と入れて下記マクロを Book2 の標準モジュールに書きます。
この2つ以外のブックは開いて無いのが実行の条件です。

Sub Test()
Dim ws As Worksheet, wb As Workbook, r

 For Each wb In Workbooks
  If Windows(wb.Name).Visible Then
   If Not wb Is ThisWorkbook Then
     Set ws = wb.Worksheets(1)
     Exit For
   End If
  End If
 Next wb

 If ws Is Nothing Then Exit Sub

 With ThisWorkbook.Worksheets(1)
  Set r = .Range("A:A").Find(What:=ws.Range("A1").Value, _
       After:=.Range("A65536"), LookIn:=xlFormulas, _
       LookAt:=xlWhole, MatchCase:=False)
 End With

 If r Is Nothing Then
   MsgBox "見つからない", vbExclamation, "エラー"
 Else
   ws.Range("B1:D1").Copy r.Offset(0, 1)
 End If

End Sub
    • good
    • 1
この回答へのお礼

有難う御座います。
一度頂いた式にてトライしてみます。
確かに私の質問だと不明な点がありますので
いろいろ試行錯誤させていただき不明な点がありましたら
また質問させて頂きたいと思うのですがよろしいでしょうか?
ひとまず格闘してみます。

お礼日時:2006/10/19 08:32

#1です。



データ報告用シートを配布して記入させ、それを回収して別のブックにデータを蓄積したいって感じですか?

こちらの質問に近いですか?
http://okwave.jp/qa2470422.html
    • good
    • 1
この回答へのお礼

有難う御座います。
ほぼ同じかと思います。
できれば私の場合は会社ごとのシートではなく
一つのシートの日付の一致する行にデータを入れることが
できないかと思っています。
私も教えて頂いた質問の方と同じようにVBAについて
素人同然ですので、お手数ですが式を教えていただけると
助かります。わがまま言って申し訳御座いませんが
宜しくお願い致します。

お礼日時:2006/10/18 08:28

 


>入力シートは入力しては消して次の日にまた新たなデータを入力
データ作成には単に入力するだけではなくて
修正、削除もあると思いますがその時は?

何れにしろ、No1さんの回答にあるフォームを使うか
集計シートに直接入力する方がベターだ思いますが。。。
 
    • good
    • 1
この回答へのお礼

有難う御座います。
修正の時はもう一度記入して上書きで
削除の時は・・・どの様にしたらスムーズですかね?
すみません。そこまで考えてませんでした。
数値なので0を記入でもよいかなと考えてはいます。

お礼日時:2006/10/16 09:02

可能かって話なら、可能だと思います。


但し、VBAが書けるならって事になるでしょう。

簡易的なデータフォームではダメなのでしょうか?
http://www.juno-e.com/excel/waza/waza10.htm
    • good
    • 0
この回答へのお礼

有難う御座います。
簡易的なデータフォームも考えたのですが
入力シートはメールにて他の人へ送らなくてはいけないので
できれば専用のシートで記入したいと思います。
ちなみにメール送信用にコピーして新しいブックに貼付けして
保存というマクロまでは作ってみました。
お手数ですが何か良い案がありましたら教えてください。

お礼日時:2006/10/16 08:57

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルでシートに入力した値を別シートに飛ばし、月別に集計する方法を教えてください

タイトルでは分かり辛かったとは思いますが、要約すると以下の通りです。

1.元シート(以下Aと呼びます)に毎日同じセル内に1回値を入力します。

2.その入力された値を別シート(以下Bと呼びます)へとリンクさせ、尚且つそのBシート内で1か月分の集計を取ります。

つまりAシートでは毎日同じセルに値を入力しますが、Bシートでは1列ずつ下に記録され1か月分の入力がされていく、そのような操作は可能でしょうか?

Bシートのあるセルに”=Aシートの指定セル”を入力するとAシートで値を変更するたびに同じセル内で値が更新されてしまいます。

どなたか方法が分かる方お知恵をお貸し下さい。よろしくお願いします。

Aベストアンサー

似たような質問は結構多くありますが、セルに値を入力したときにマクロを実行すると、間違えた場合、訂正した場合は、どうするかなどがあります。
やりたいことを、Sheet1のC1,C2,C3に入力して内容確認後、ボタンを押すと
Sheet2のデータの最後の行の下に、横方向に記録していくということしたら。VBAで仕事を行うに定番のようなマクロです。
以下、試して、そちらの都合に合わせて編集してください。

Sub ボタン3_Click()
GYOU = Sheets("Sheet2").Range("B65536").End(xlUp).Offset(1, 0).Row
Sheets("Sheet2").Cells(GYOU, 2).Value = Range("C1").Value
Sheets("Sheet2").Cells(GYOU, 3).Value = Range("C2").Value
Sheets("Sheet2").Cells(GYOU, 4).Value = Range("C3").Value
End Sub
補足説明
Range("B65536").End(xlUp).Offset(1, 0).Row  は
エクセルで使用できる最大行65536行目のB列を上方向へ移動して、空白でない行を探す、その行から1行上へ移動した行番号を取得して、変数GYOUに入れる。
Sheets("Sheet2").Cells(GYOU, 2).Value = Range("C1").Value は、
シート2で、前のコマンドで探し当てた行の2列目にC1セルに値を入れるです。

似たような質問は結構多くありますが、セルに値を入力したときにマクロを実行すると、間違えた場合、訂正した場合は、どうするかなどがあります。
やりたいことを、Sheet1のC1,C2,C3に入力して内容確認後、ボタンを押すと
Sheet2のデータの最後の行の下に、横方向に記録していくということしたら。VBAで仕事を行うに定番のようなマクロです。
以下、試して、そちらの都合に合わせて編集してください。

Sub ボタン3_Click()
GYOU = Sheets("Sheet2").Range("B65536").End(xlUp).Offset(1, 0).Row
Sheets("S...続きを読む

Qエクセルで打ち込んだ数字を自動で別シートに表示したい

エクセルでセルに打ち込んだ数字を自動で別シートに表示できる方法があれば、教えてください。

例えば、シート1のC1に5を打ち込んだら、シート2のD2にシート1で打ち込んだ5が自動で表示される。

また1列すべてを自動で表示させる場合、一つのセルの時と違いがありましたら教えてください。よろしくお願いします。

Aベストアンサー

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コピー&リンク貼り付けを使うと便利です。

例)例)シート1のC1~C5に何かを入力したら、
  シート2のD2~D7にシート1で打ち込んだものが自動で表示される

  シート1にあるコピー元のセルを範囲選択して、
  シート2のD2の上で「右クリック」⇒「形式を選択して貼り付け」
  をクリックします。

  そして出てきた小さな画面の左下にある「リンク貼り付け」という
  ボタンをクリックすると完成です。
  試してみてください。。

  念のためにリンク貼り付けを図解しているURLを載せておきます。
  参考にしてみてくださいね。。
  http://www.geocities.jp/office_inoue/excel/eq21.htm

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コ...続きを読む

Qエクセルで日毎のデータの蓄積

シートBにその日のデータを入力し、そのデータをシートAに蓄積していきたいです。

手作業ならば、
1.入力されたシートBのその日のデータをコピー
2.シートAの同じ日付の行を探し、値のみペースト
とするのでしょうが、これを自動化したいです。
セル参照だと、毎日、同じ行にデータが上書きされていくため
無理っぽいし、マクロを使わないとできませんか?

コピーとペーストはできそうですけど、「同じ日付の行を探し」というところが難しそうだなぁと思いました。。。

すみませんが、よろしくお願いします。

シートA(データ蓄積用)
日付   データ
12/1   データ1
12/2


12/31

シートB(データ入力用)
日付   データ
12/2   データ2
↑日付が変われば、同じ行にデータを上書き

Aベストアンサー

シート名「シートB」の シート名タブを右クリックして「コードの表示」
出てきたVBE画面にコピペします。

シートB の B2セルに書き込みをするとシート名「シートA」に書き込みをします。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim r, tr As Range
Set tr = Target.Cells(1, 1)
If tr.Address = "$B$2" Then
  With Worksheets("シートA")
  Set r = .Range("A:A").Find(tr.Offset(0, -1).Value, _
        .Range("A65536"), xlFormulas, xlWhole)
    If r Is Nothing Then
      .Range("A65536").End(xlUp).Offset(1, 0).Value = tr.Offset(0, -1).Text
      .Range("B65536").End(xlUp).Offset(1, 0).Value = tr.Value
    Else
      r.Offset(0, 1).Value = tr.Value
    End If
  End With
End If
End Sub

シート名「シートB」の シート名タブを右クリックして「コードの表示」
出てきたVBE画面にコピペします。

シートB の B2セルに書き込みをするとシート名「シートA」に書き込みをします。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim r, tr As Range
Set tr = Target.Cells(1, 1)
If tr.Address = "$B$2" Then
  With Worksheets("シートA")
  Set r = .Range("A:A").Find(tr.Offset(0, -1).Value, _
        .Range("A65536"), xlFormulas, xlWhole)
    If r Is...続きを読む

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QEXCELで入力したものが違うシートにコピーされるようにするには・・

EXCELで、あるシートで入力した数値や文字が違うシートにそっくりコピーされるようにしたいのですが・・・
違うシートに同じ数値や文字をいちいち入力するのがめんどうだったので・・・(あと、入力間違えをすることもあると思ったので)
どなたか教えてください。宜しくお願い致します。

Aベストアンサー

同じブック間でも違うブック間でも、
リンク貼り付けという方法があります。

多分ご質問では、最初のページに「2006年」と入力したら
次からのページの同じ場所に「2006年」と表示させたい、と、こんな感じではないでしょうか?

あるシート(貼り付け元)の範囲を選択し、コピーします。
違うシート(貼り付け先)の1セルを右クリックし、形式を選択して貼り付けで出た窓の下に
「リンク貼り付け」ボタンがありますから、それを押して下さい。

あるシートに入力した文字が違うシートに表示されます。
ただし書式は、違うシートのセルの書式の通り表示されます。
また、あるシートのセルに何も入力されていなければ、
違うシートの該当セルには「0」と表示されます。
この「0を表示しない方法もありますので、
具体的にどのシートのセル番地からどのシートのセル番地、という風に書いてください。
1つのセルのみ貼り付ける場合と、2つ以上の範囲を貼り付ける場合で
貼り付けられ方が微妙に違います。

さて、上手に貼り付けられたら、違うシートに貼り付けられたそのセルを、
また別なシートに次々にコピーしていきます。
1回リンク貼り付けをしたら、このように使いまわすことができます。

あまりにも情報が少ない中回答させていただいたのですが、
上記の中で当てはまる部分があったでしょうか?

実際貼り付けてみて、その後を報告してください。

同じブック間でも違うブック間でも、
リンク貼り付けという方法があります。

多分ご質問では、最初のページに「2006年」と入力したら
次からのページの同じ場所に「2006年」と表示させたい、と、こんな感じではないでしょうか?

あるシート(貼り付け元)の範囲を選択し、コピーします。
違うシート(貼り付け先)の1セルを右クリックし、形式を選択して貼り付けで出た窓の下に
「リンク貼り付け」ボタンがありますから、それを押して下さい。

あるシートに入力した文字が違うシートに表示されます。...続きを読む

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

Q(Excel)あるセルに文字を入力しただけで、同じブック内のほかのワークシートにも、同じ文字が自動的に入るようにするには?

こんにちは。
質問内容はタイトルのとおりです。

あるワークシートのあるセルに文字を入力すると、ほかのワークシートのセルにも同じ文字が自動的に書き込まれる方法を知りたいです(ブックは同じ)。複数のワークシートを制御するには、やはりマクロを使うのでしょうか?

よろしくお願いします。

Aベストアンサー

clam_chowderさん、こんにちは。

Sheet1のA1にたとえば「100」と入力しますね。
Sheet2のA1に、これと同じ数値を表示するには、
 =Sheet1!A1
でOKです。

数式をいれるのが苦手なら、
Sheet2のA1セルで「=」を入力すると、数式入力状態に入りますから、
ここでSheet1のシートタブをクリックし、
リンクしたいA1セルをクリックしてEnterすると、
自動的にさきほどと同じ式が入ります。

QExcelで入力したデータを他のシートにも反映したいです

Excelでシートに入力したデータだけを他のシートに表示させたいです・・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。

シート1
 Å列    B列 C列    
キャベツ     玉   1
りんご     個   2
オレンジ    個
バナナ     本   10
きゅうり    本
ニラ     Kg  20.5

シート2
 Å列    B列 C列
キャベツ     玉  1
りんご     個  2
バナナ     本  10
ニラ     Kg  20.5

↑のように。シート1に入力したデータを入力した行ごと表示させたいです。

Aベストアンサー

》 なにぶん初心者なもので…

関数を一切使用しない方法(フィルタオプションの設定)をご紹介します。

Sheet1
1   A    B   C
1 品名   単位 数量
2 キャベツ 玉    1
3 りんご  個    2
4 オレンジ 個
5 バナナ  本   10
6 きゅうり 本
7 ニラ   Kg  20.5
8

添付図は[フィルタオプションの設定]を開始する Sheet2 を示しています。
([データ]→[フィルタ]→[フィルタオプションの設定]の手順を実行します)

Qエクセルでデータを蓄積させるには?

エクセルで、入力用雛形シートと、蓄積用リストシートを作ります。入力雛形にデータを入力すると、リスト画面に蓄積されるにはどうすればいいでしょうか?保存ボタンを押すと入力したデータがリストに順々に保存されていくという形にしたいのですが・・・入力雛形はリスト画面に蓄積された(保存ボタンを押した)後、クリアさせるようにもしたいです。マクロは初心者です。教えて下さい。

Aベストアンサー

Dim WS1 As Worksheet '変数の宣言:シート1
Dim WS2 As Worksheet '変数の宣言:シート2
Dim r1 As Range, r2 As Range 'セル(Range)の宣言 シート1&2用

Set WS1 = Worksheets("Sheet1") '変数WS1にシート1をセット
Set WS2 = Worksheets("Sheet2") '変数WS2にシート2をセット
Set r1 = WS1.Range("B1:B3") '変数r1にシート1のセルB1:B3をセット

Set r2 = WS2.Range("B" & Rows.Count).End(xlUp).Offset(1)
'変数r2にシート2のB列最終行の1つ下をセット

r2.Resize(, 3).Value = Application.Transpose(r1)
'変数r2でセットされたセルから、右に2個増やした
'セル3個分に、r1でセットされた3個のセルを
'行列入替え(縦並びを横並びに)て代入する

r2.Offset(, -1).Value = r2.Row - 1
'シート2のB列(r2)の1つ左(A列)に
'行番号から1引いた数を代入する。
'(項目行の分だけ1引いて調整してる)

>項目を増やしたのでマクロも書き換えなくてはいけないですよね?
どのように増やすのかも提示された方が、回答がスムーズにいくと思います。

取り敢えず、シート1の項目が3つでない場合なら、
Set r1 = WS1.Range("B1:B3")
B1:B3を実際の範囲に合わせる。(例・B1:B6とか)
r2.Resize(, 3).Value = Application.Transpose(r1)
3を実際のセル個数にあわせる。(例・B1:B6なら6とか)

Dim WS1 As Worksheet '変数の宣言:シート1
Dim WS2 As Worksheet '変数の宣言:シート2
Dim r1 As Range, r2 As Range 'セル(Range)の宣言 シート1&2用

Set WS1 = Worksheets("Sheet1") '変数WS1にシート1をセット
Set WS2 = Worksheets("Sheet2") '変数WS2にシート2をセット
Set r1 = WS1.Range("B1:B3") '変数r1にシート1のセルB1:B3をセット

Set r2 = WS2.Range("B" & Rows.Count).End(xlUp).Offset(1)
'変数r2にシート2のB列最終行の1つ...続きを読む

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング