アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excelについての質問です。
説明が分かりづらかったらすみません。


〚sheet1〛がおおもとの入力場所で
〚sheet2〛〚sheet3〛と自動入力できないかなと思い
教えて頂ければ幸いです。


(例)
〚sheet1〛
   A  B  C  D
1 バナナ 黄 100 東京
2 トマト 赤 200 京都
3 おにく 茶 300 愛知
4 りんご 赤 400 東京
5 キウイ 緑 500 京都

のように入力していき、

〚sheet2〛が東京
〚sheet3〛が京都として
D列の文字がメインで

〚sheet2〛東京
   A  B  C  D
1 バナナ 黄 100 東京
2 りんご 赤 400 東京

〚sheet3〛京都
   A  B  C  D
1 トマト 赤 200 京都
2 キウイ 緑 500 京都

のように自動で入力できるような
方法ありますでしょうか。。。


説明下手で申し訳ございませんが
よろしくお願いいたします!!

A 回答 (7件)

シートを分けないとダメなのでしょうか?


データタブのフィルターを使うと簡単に抽出できるのですが・・・。
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございました!!

お礼日時:2019/11/08 17:01

>自動で入力できるような



ちょっと気になる書き方ですかね。
少なくとも2つの考え方として受け取られます。
①Sheet1の入力が全て終わってから実行させて各シートに振り分ける。(ただし振り分け先についてはそのSheet名が地名であるなら楽でしょう。)
②Sheet1に入力が完了する毎に即時各Sheetに振り分け格納する。(これもSheet名の工夫は上記と同じ)
③その他
と感じましたけど如何でしょうか?
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございました!!

お礼日時:2019/11/08 17:01

いきなりですが、別解です。


ブック名を[名前を付けて保存]した後で、Sheet2、Sheet3 のシート名をそれぞれ"東京"、"京都"に変更しておきます。
シート"東京"において、
次式を入力したセル A1 を右に3列、下に空白行が出るまでオートフィル
=IFERROR(INDEX(Sheet1!A$1:A$1000,SMALL(IF(Sheet1!$D$1:$D$1000=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,9),ROW(A$1:A$1000)),ROW(A1))),"")
【お断り】上式は必ず配列数式として入力のこと

シート"京都においても同じ操作です。
「エクセルの文字列をシートへ自動入力の仕方」の回答画像3
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございました!!

お礼日時:2019/11/08 17:02

こんにちは



「自動入力」というご質問ですが、意味合いとしては「自動転記」みたいな感じですよね。

関数でもできそうだし、VBAでもできると思いますが、一番簡単そうなのはNo1様がご提示のフィルタでしょうか。
「いちいち切り替えるのが面倒だからダメ!」と言うのであれば、Sheet2、Sheet3はSheet1と同じ内容にしておいて、Sheet2は東京、Sheet3は京都でフィルターをかけた状態にしておけば良いです。
(と言っても、3枚のシートにまったく同じデータがあるので、あまり効率的とは言えませんが…)

ちなみに、Sheet1に入力したら、即時に他のシートにも反映されるようにしたいなら、Sheet2(Sheet3)のA1セルに
 =IF(Sheet1!A1="","",Sheet1!A1)
の関数式を入力して、必要範囲にフィルコピーしておけば、即時に反映されるようになります。
この状態で、Sheet2は「東京」、Sheet3は「京都」でフィルターをかけておけば、見かけ上はご希望の内容と同じになろうかと思います。

テーブルにしておいてD列でソートするだけでも、ほとんど同じ内容が一つのシートで実現できそうに思います。(テーブルにしなくても並び替えだけでもOKですね)

「行番号が1から順に揃っていなきゃダメ!」というのであれば、関数式を用いるかVBAということになりそうです。
その場合は、「エクセル データを抽出」などでぐぐると、いろいろな方法が見つかると思います。
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございました!!初めての利用で、御親切に対応していただき感謝しております!助かりました!!

お礼日時:2019/11/08 17:04

「陣中膏ガマの油売り」の口上てのをご存知?Excel的には、


1シートが2シート、2シートが4シート、4シートが…、16シートが30と2シート、32シートが60と4シートという台詞になろうかと。

"東京"のシート名をマウスで掴んで、Ctrlキーを抑えたまンまで右側にドロップすると"東京 (2)"が出来ます。内容はシート"東京"と同じ。今度は2枚のシート"東京"と"東京 (2)"を掴んでCtrl+右側ドロップ、次に4枚のシートを…、という次第。
最後にシート名を京都、愛知、…を変更するだけェ~(*^_^*)
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございました!!

お礼日時:2019/11/08 17:02

ピボット作って、データ追加したら、ピボットも更新するってことでいいんじゃない?


それが簡単だよ。
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございました!!

お礼日時:2019/11/08 17:02

マクロで作ってみました。

入力終了後に実行して下さい。

Sub Sample()

 Const 元シート名 As String = "Sheet1"
 Dim 元行 As Long
 Dim 地名 As String
 Dim 地名辞書 As Object
 Dim シート As Object
 Dim 先行 As Long
 
 Sheets(元シート名).Select
 Set 地名辞書 = CreateObject("Scripting.Dictionary")
 For 元行 = 1 To Cells(Rows.Count, 4).End(xlUp).Row
  地名 = Cells(元行, 4).Value
  If 地名辞書.Exists(地名) = False Then
   地名辞書.Add 地名, 元行
   For Each シート In Sheets
    If シート.Name = 地名 Then
     Application.DisplayAlerts = False
     Sheets(地名).Delete
     Application.DisplayAlerts = True
     Exit For
    End If
   Next
   Sheets(元シート名).Copy After:=Sheets(Sheets.Count)
   ActiveSheet.Name = 地名
   For 先行 = 1 To Cells(Rows.Count, 4).End(xlUp).Row
    If Cells(先行, 4).Value <> 地名 Then Cells(先行, 4).ClearContents
   Next
   Cells.Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlNo
   Range(Cells(Cells(Rows.Count, 4).End(xlUp).Row + 1, 1), Cells(Rows.Count, Columns.Count)).Delete Shift:=xlUp
   先行 = ActiveSheet.UsedRange.Row
   Sheets(元シート名).Select
  End If
 Next
 Set 地名辞書 = Nothing
 MsgBox ("終了しました")

End Sub

※ データに「事業所の個別郵便番号データ」(2万件強)でテストして2分位で完了しました。
※ シートは自動で作られます。同じ名前のシートが有ったら削除してから作業を行っています。
※ 最初のシート名が「Sheet1」でないときは「Const 元シート名 As String = "Sheet1"」を修正して下さい。
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございました!!

お礼日時:2019/11/08 17:02

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