• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル 他シートに特定項目のみ自動入力する方法)

エクセルで他シートに特定項目のみ自動入力する方法

このQ&Aのポイント
  • エクセルで特定の項目を他のシートに自動入力する方法について教えてください。
  • 購入一覧のシートにある果物の項目を指定して、別のシートに自動入力する方法を教えてください。
  • みかんやりんごなどの果物が記載されているシートに、特定の果物を入力すると、それに対応する行が他のシートに自動入力される方法を教えてください。

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

  • ベストアンサー
  • msMike
  • ベストアンサー率20% (364/1804)
回答No.5

添付図参照 1.Sheet1、Sheet2、Sheet3 のシート名をそれぞれ  ̄ ̄購入一覧、みかん、りんご  ̄ ̄に変更 2.このブックに[名前を付けて保存]を実行しておく 3.シート「購入一覧」において、  ̄ ̄範囲 A1:D1000 を選択 ⇒ Alt+MC ⇒ "上端行"だけにチェック入れ  ̄ ̄⇒ [OK] 4.シート「みかん」のセル A2 に次式を入力 ⇒ セル A2 を右3列に  ̄ ̄オートフィル ⇒範囲 A2:D2 を下方にズズーッとオートフィル  ̄ ̄ =IFERROR(INDEX(INDIRECT(A$1),SMALL(IF(果物=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,99),ROW(果物)),ROW(A1))-1),"")  ̄ ̄【お断り】上式は必ず配列数式として入力のこと 5.シート「りんご」において、ステップ4を実行

Ndur
質問者

お礼

ありがとうございます。試してみたのですが・・・・さらに試してみます。

その他の回答 (4)

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.4

VBAなしで、おやりになりたいことが可能です。 テーブルとして書式設定は如何でしょう 添付のように 添付のように任意のセルをアクティブにして⇒ホーム ⇒テーブルとして書式設定⇒先頭行をテーブルの見出しとして使用するに? ⇒OK  と進みます。 テーブルとして書式設定すると ・各見出しの右に??が表示されフィルターと並び替えの機能になります ・空白行もフィルタ対象になり、印刷時に空白行を除去できます ・データ入力時にEnterでマウスカーソルが右に移動しますが  テーブルの右端の次は次行の先頭になり入力効率が上がります ・数式は一つのセルに定義すると他の行も同じ式が適用されます

Ndur
質問者

お礼

返答が遅くなりましたが、ありがとうございます。

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.3

恐らくこういう事がしたいのだろうと勝手に判断してマクロを作成しました Sheet1にすべて入力した後で以下のマクロを動かすと、果物名別に新規シートを作成し、情報を出力します。 あくまでサンプルですので、変数宣言やエラー処理もしていません。悪しからず。 Sub sample()   Set myDic = CreateObject("Scripting.Dictionary")   With Worksheets(1)     '果物名一覧作成     On Error Resume Next     For i = 2 To .Range("A1").End(xlDown).Row       myDic.Add .Cells(i, 1).Value, ""     Next i     '果物名毎に新規シートに出力     myKey = myDic.keys     For i = 0 To (myDic.Count - 1)       .Range("$A:$E").AutoFilter Field:=1, Criteria1:=myKey(i)       Sheets.Add After:=ActiveSheet       .Range("A1").CurrentRegion.SpecialCells(xlVisible).Copy ActiveSheet.Range("A1")     Next i     .Range("$A:$E").AutoFilter   End With End Sub

Ndur
質問者

お礼

返答が遅くなりましたが、ありがとうございます。

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.2

1番簡単な方法ですかSheet2、A列をワークエリアに使います。 A2 =(Sheet1!A2="みかん")+A1 B2 =IFERROR(INDEX(Sheet1!B:B,MATCH(ROW(A1),$A:$A,0)),"") D2までコピペして下にコピペ A列はみかんに決まっているからいらないだろうと考え、ワークエリアにしました。 配列関数を使えば、ワークエリア無しでできますが、力不足でできませんでした。式が複雑になるうえ、コンピューターに負担がかかるのでやめた方がいいです。 VBA の方がよければ、補足又はお礼に書いていただければ作ってみます。

Ndur
質問者

お礼

返答が遅くなりましたが、ありがとうございます。 折角作成も言っていただきましたが、御迷惑をおかけしますので、何かの機会にまたお願いするかもしれません。ありがとうございました。

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

質問文の書き方から、質問者は、エクセルやVBAやシステムの経験は少ないように思う。 例えば、質問を、一言で表現すると、「Sheet1にデータを入力し、その果物列の品名で、各品物名のデータを、果物別の別シートに振りわけしたい」と言えば、よいことなのに、説明がくどい? ーー (1)関数ではむつかしいと思う。式が複雑になる。 (2)質問通りに「構想」すると、VBAの「イベント」という考え方を取り入れることになるが、VBAやイベントやコントロール・フォームなどの経験が少ないと無理だと思う。もっと勉強してからの課題だと思う。 「イベント」を使うと、既存データの一部変更などの対処が必要で複雑化する。 (3)Sheet1への、その回(その1日分やその回のまとめたデータ原書)の入力が終わったら、そのきっかけで、「バッチ処理」(まとめてSheet1全体を振り分けしなおし)をするのが、わかりやすく、安定していると思うが、Sheet1への1行入力のつど、各シートへ振り分けをしないとダメなのかな。  本来は、最低でも、Access程度のデータべース的なソフトで、それを扱える 程度の人がやること。まずエクセルを発想するレベルでは、力不足だと思う。 特に本件が、仕事関係の課題ならば、特にそうだと思う。本当はプロに相談することを勧める。 ーー こういう、システムに絡んだ、「構想」は、後のこのデータの利用法や、その後にそれを利用する他人の使い勝手などとも関連するので、システムの良き構想が要る。経験が少ないものが、自己の思い付きでやっては、失敗すると思う。

Ndur
質問者

お礼

返事が遅くなりまして申し訳ございません。 まさにご指摘のとおりで、自分には困難な作業と感じております。周囲に相談できる人が全くいませんでしたのでご相談させていただきましたが、力不足を痛感するところでございます。

関連するQ&A