[[20070810120307]] 『Excelについて』(Gost) ページの最後に飛ぶ

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

 

『Excelについて』(Gost)

 すいませんが皆様の知恵をお貸しください。

 SheetにA列に協力会社CDとB列に会社名が入力されています。
 会社名で同じ会社名でなおかつ協力会社CDも同じデータがある場合があるのですが
 それらを一つにまとめたいと思っています。
 Excelでそういったことは出来るのでしょうか?
 教えてください。

     A    B
 1 101 A社
 2 102 B社
 3 103 C社
 4 102 B社  ←102のB社は2行目に存在するので削除
 5 101 A社  ←101のA社は1行目に存在するので削除
 6 101 A社1 ←削除対象外。別会社とする。

 協力会社CDは1桁から8桁まで存在します。
 会社名は半角全角を区別してください。
 よろしくお願いします。


 作業列を作成し、↓のような表にして
 「作業列2」にオートフィルタをかけ「削除」のみ表示
 その行だけ削除後、作業列削除

 	[A]	[B]	[C]	[D]
[1]	コード	社名	作業列1	作業列2
[2]	101	A社	101 A社	削除
[3]	102	B社	102 B社	削除
[4]	103	C社	103 C社	
[5]	102	B社	102 B社	削除
[6]	101	A社	101 A社	削除
[7]	101	A社1	101 A社1	

 C2 =A2&" "&B2
 D2 =IF(COUNTIF(C:C,C2)>1,"削除","")

 (Ohagi)

 あまりにも行の数が多いので会社名が同じかどうか見つけにくいので
 簡単な方法を教えてください。

 (Gost)


 (1) C1セル =A1&"#"&B1  
   これをフィルダウン

 (2) D1セル =NA()   ※ エラーを出させるだけ

 (3) D2セル =LOOKUP(ROW(C2)-1,FIND(C2,C$1:C2)*ROW(C$1:C2))
   これをフィルダウン

 (4)D列全体を選択して、Ctrl + G でジャンプし、
   セル選択→数式に黒目を入れ、
   数値だけ残して、「文字、論理値、エラー値」のチェックを外し、
    [メニュー]編集→削除→行全体
  不要化したC,D列をクリアー

 行   _A_  __B__  ____C____  _D__  →  行   _A_  __B__  ____C____  _D__
  1   101  A社    101#A社    #N/A        1   101  A社    101#A社    #N/A
  2   102  B社    102#B社    #N/A        2   102  B社    102#B社    #N/A
  3   103  C社    103#C社    #N/A        3   103  C社    103#C社    #N/A
  4   102  B社    102#B社       2        4   101  A社1  101#A社1  #N/A
  5   101  A社    101#A社       1        5   101  a社    101#a社    #N/A
  6   101  A社1  101#A社1  #N/A     
  7   101  a社    101#a社    #N/A     ※ A列の元データも無くなります

 (半平太)
 私の案は間違っていました。 m(__)m

 子会社が先に来ると、親会社が削除対象になってしまいます。


 Ohagiさんの方法で1行1行削除は大変、ということでしょうか?

 でしたら、オートフィルタで「削除」のみ表示した後、
 表全体(タイトルは除く)を選択し、
 [Atl]+[;]とすると「可視セル」のみ選択されます。
 それで削除をすれば簡単ではないでしょうか?
 (gloomy)

 私の勘違いでした。
 皆様ありがとうございます。
 出来ました。

 (Gost)

 >会社名は半角全角を区別してください。

 これは何だったのですか?
 (半平太)

 (Ohagi) (gloomy)のやり方で削除をやってみました。
 会社名が同じやつを全部削除するのではなく、一つだけは削除しないで残しておきたいのですが
 どうも同じ会社名はすべて削除されてしまいます。

 会社名の中に同じ名前でも半角カッコがあったり、半角スペースが空いている場合があるので
 そのような場合を区別してほしいということでした。

 (Gost)

 A社とa社は、同じでよければ、

 (1) C1セル =A1&"#"&B1
 (2) D1セル =IF(MATCH(C1,C$1:C1,0)=ROW(C1),"","削除")

 行   _A_  __B__  ____C____  _D__  
  1   101  A社    101#A社          
  2   102  B社    102#B社          
  3   103  C社    103#C社          
  4   102  B社    102#B社    削除  
  5   101  A社    101#A社    削除  
  6   101  A社1  101#A社1        
  7   101  a社    101#a社    削除  
  8   101  ア社   101#ア社         
  9   101  ア社    101#ア社          
 10   101  A社    101#A社    削除  (半平太)

 ※「ア社」と「ア社」が同じとの判定なら、

 (1) C1セル =ASC(A1&"#"&B1)  に変更して下さい。 (半平太)


=IF(COUNTIF(C:C,C2)>1,"削除","")

 →=IF(COUNTIF(C2:$C$2,C2)>1,"削除","")

 数える範囲を変えてあげてください

 (Ohagi)

 (洋平太)
 A社とa社、ア社とア社も別物と考えてください。

 (Ohagi)
 B列の順番はバラバラでどこに何が入っているかわからないので、一つずつ範囲を変える方法だと
 手間がかかってしまう気がするのですが・・・・。
 考え方が間違ってましたらすいません。

 (Gost)

 やってみましたか?
 > B列の順番はバラバラでどこに何が入っているかわからないので、一つずつ範囲を変える方法だと
 >手間がかかってしまう気がするのですが・・・・。
 D2に提示の数式を入れてフィルダウンで該当箇所に削除と表示されますので
 それをオートフィルタなどで選んで削除すればご希望のものになるかと。
 ただ、Ohagiさんの数式でも半角/全角は同一とみなされてしまいますが・・・
 回答でなくてすいません。。。
 (hana)

 C1セル =A1&"#"&B1
 D1セル =IF(ISNA(LOOKUP(ROW(C1)-1,(1/EXACT(C1,C$1:C1))*ROW(C$1:C1))),"","削除")

 行   _A_  __B__  ____C____  _D__  
  1   101  A社1  101#A社1        
  2   102  B社    102#B社          
  3   103  C社    103#C社          
  4   102  B社    102#B社    削除  
  5   101  A社    101#A社          
  6   101  A社    101#A社    削除  
  7   101  a社    101#a社          
  8   101  ア社   101#ア社         
  9   101  ア社    101#ア社          
 10   101  A社    101#A社    削除   (半平太)


 Gostさん

 ・「さん」をつけませんか?
 ・ニックネームを確認しませんか?

 ごめんなさい、ちょっと気になりました。(のり)

 >手間がかかってしまう気がするのですが
 と、おっしゃられているので試されていないようですね?
 折角回答をしてもらっているですから、試してから
 「ダメでした」「出来ました」のレスを付けた方が良くないですか?

 試していれば
 >一つずつ範囲を変える方法だと
 と言うお返事は無いと思いますよ?(^_^;)
 半角全角を意識するのであれば、半平太さんがご提示くださっている
 ものを試されてはいかがでしょうか?

 (Ohagi)

 皆様のご指摘ありがとうございます。
 おっしゃるとおりです。

 ご迷惑をおかけしてすいませんでした。

 (Gost)

コメント返信:

[ 一覧(最新更新順) ]


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