[[20240311130826]] 『キー毎に別シートに移動(コピペ)』(FRISK) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『キー毎に別シートに移動(コピペ)』(FRISK)

A列にキーになる「商品CD」があります。
「商品CD」毎に別シートに移動(コピペ)したい
シート名は「商品CD」にできれば

「商品CD」の種類は2個の場合から100個を超える場合もあります。
行数は決まっていませんが
列数はZ列までと決まっています。

この様な処理は可能でしょうか
可能であればできる事であれば式を教えて下さい。

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


様々な方法が有るかもしれませんが
100シートにも及ぶ処理ならマクロがよろしいのでは
ないでしょうか。^^;
m(__)m
(隠居Z) 2024/03/11(月) 19:20:18

 元のデータがシート1のA列からD列、最大50行までで、1行目が見出しだとして。
 別シートに1行目は見出しを手入力。
 A2セルに
 =FILTER(シート1!A2:D50,シート1!A2:A50=REPLACE(CELL("filename",A1),1,FIND("]",CELL("filename",A1)),""))
 と入力。

 あとは式を入力したシートをコピーしてシート名を商品CDに変更する、ではどうだろうか?

 REPLACE(CELL("filename",A1),1,FIND("]",CELL("filename",A1)),"")
 で、式が入力されたシート名を取得してFILTER関数でシート名と同じ商品CDのものを抜き出している。

 シート名が商品コードに対応するシートも自動で作成したいのであればマクロで。
(ねむねむ) 2024/03/12(火) 09:26:24

 1つのブックにシートが100枚ですか
 いろいろ大変そうですね

    Sub sample()
      Dim aRow As Range, key As Variant
      Dim dic As Object
      Set dic = CreateObject("Scripting.Dictionary")
      For Each aRow In Range("Z1", Cells(Rows.Count, "A").End(xlUp)).Rows
         key = aRow.Cells(1, 1).Value
         If dic.Exists(key) Then
            Set dic(key) = Union(dic(key), aRow)
         Else
            dic.Add key, aRow
         End If
      Next
      For Each key In dic.Keys
         With Worksheets.Add(after:=Worksheets(Worksheets.Count))
            .Name = key
            dic(key).Copy
            .Paste
         End With
      Next
    End Sub
(´・ω・`) 2024/03/12(火) 12:56:56

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.