[[20190308012226]] 『データの整理』(友紀) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『データの整理』(友紀)

エクセルの初心者です。
シートAにA列からT列にデータがあります。
A列は会社に与えられた番号が付与されています。範囲はA1からT5000まであります。
シートAには支店が複数ある会社と1つ会社があり、シートBに支店が複数ある会社だけを表示したいのですが、良い方法がありますでしょうか?
よろしくお願いいたします。

シートA

   A          B                T
 番号   会社名                           支店名
   1     A社               A
   1                                           B
   1                                           C
   2          B社                              A
   3          C社               A
   3                                           B
   4          D社               A
   5          E社               A
   6          F社               A
   6                                           B

シートB

   A          B                                T
 番号   会社名              支店名 
   1     A社               A
   1                                           B
   1                                           C
   3          C社               A
   3                                           B
   6          F社               A
   6                                           B

 

< 使用 Excel:Excel2010、使用 OS:Windows7 >


データ数が多いので作業列(仮にV列)を使ってはいかがでしょう。

シートA!V2: =IF(AND(A3=A2,B2<>""),ROW(A1),"")

セルV5000までコピーします。

シートB!A2: =IFERROR(INDEX(シートA!$A$2:$T$5000,SMALL(シートA!$V$2:$V$5000,ROW(A1)),COLUMN(A1)),"")

セルT2までコピーし、必要数下にもコピーします。
(メジロ) 2019/03/08(金) 05:59


すいません。書き込みをよく読んでいませんでした。
時間がとれれば後ほど書き込みます。
とりあえず、没にしてください。

(メジロ) 2019/03/08(金) 08:56


 シートBのA2セルに
 =IFERROR(INDEX(シートA!A:A,SMALL(IF(COUNTIF(シートA!$A$2:$A5000,シートA!$A$2:$A$5000)>1,ROW($2:$5000),""),ROW(A1)))&"","")
 と入力してShiftキーとCtrlキーを押しながらEnterキーで式を確定(確定後、式が{}で囲まれればOK)その後、右及び下へフィルコピーしてみてくれ。
(ねむねむ) 2019/03/08(金) 09:26

 ただしシートAで数値の個所がシートBでは文字列の数字になる。
 =IFERROR(INDEX(シートA!A:A,SMALL(IF(COUNTIF(シートA!$A$2:$A5000,シートA!$A$2:$A$5000)>1,ROW($2:$5000),""),ROW(A1))),"")
 とするとそうならないが今度はシートAで空白セルの個所がシートBで0と表示される。
(ねむねむ) 2019/03/08(金) 09:28

 数値は数値のまま、空白セルは空白に、バージョン。
 =IFERROR(INDEX(IF(シートA!A$1:A$5000="","",シートA!A$1:A$5000),SMALL(IF(COUNTIF(シートA!$A$2:$A5000,シートA!$A$2:$A$5000)>1,ROW($2:$5000),""),ROW(A1))),"")
 Shift+Ctrl+Enterを忘れずに。
 また頭のINDEX関数の
 シートA!A$1:A$5000
 は必ず1行目からとしてくれ。
(ねむねむ) 2019/03/08(金) 10:04

午前中は失礼しました。
(ねむねむ)さんがご回答されていますので、もう必要ないと思いますが、
シートA!V2の式を下のように変更すれば行けそうです。

シートA!V2: =IFERROR(INDEX(シートA!$A$2:$T$5000,SMALL(シートA!$V$2:$V$5000,ROW(A1)),COLUMN(A1)),"")

それとB列の表示形式を、0(ゼロ)は非表示にしてください:「;;;@」
それとも支障がなければオプションで
 □ゼロ値のセルに0をゼロを表示する(Z)
のチェックを外してください。
(メジロ) 2019/03/08(金) 15:34


Sub main()

    Dim r As Range
    Set r = Sheets("シートA").Range("A1").EntireRow
    For Each c In Sheets("シートA").Range("A:A").SpecialCells(2)
        If WorksheetFunction.CountIf(Sheets("シートA").Range("A:A"), c.Value) > 1 Then
            Set r = Union(r, c.EntireRow)
        End If
    Next c
    r.Copy Sheets("シートB").Range("A1")
End Sub
(mm) 2019/03/08(金) 16:08

メジロさん
ねむねむさん
mmさん

皆さま、ありがとうございました。
さっそく月曜日におこなってみます。

(友紀) 2019/03/08(金) 21:22


メジロですが、異なる式を書き込みました。

シートA!V2: =IF(OR(AND(A3=A2,B2<>""),B2=""),ROW(A1),"")

失礼しました。

(メジロ) 2019/03/09(土) 10:36


ありがとうございました。

上手く出来ました。
(友紀) 2019/03/12(火) 01:09


コメント返信:

[ 一覧(最新更新順) ]


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