• 締切済み

Excelで重複しないキー列を作成したい

Excelの表で新旧の表を比較するために、重複しないキー列をマクロ以外の方法で設定する方法を探しています。 Row関数を使うのが一般的かと思いますが、この方法だとテーブルを並べ替えたり、行の追加・削除で連番が更新されてしまいます。 重複がなく、並べ替えや行の追加・削除をされても変化しない連番の作成方法がないでしょうか。 よろしくお願いいたします。

みんなの回答

  • Chiquilin
  • ベストアンサー率30% (94/306)
回答No.6

> マクロ以外の方法で設定する方法 元データはそのまま入力して データベースクエリで別シートにデータ をそのまま抽出→ プロパティ設定で [行番号を含む]にチェック で「_RowNum」列が追加されます。 というか新旧表の比較自体 差分クエリのようなものを用意すれば済む かと思います。

masnoske
質問者

お礼

言葉足らずの質問にお付き合いいただきありがとうございます。 以下の方法で自己解決できました。 A列がキー列でA2セル以降に重複をさせないとする場合、 A2セルを選択。 データ入力規則で入力値の種類でユーザー設定を選択。 数式に以下を入力。 =countif(A:A,A2)<=1 A3以降にもコピペなどで入力規則を設定。 回答いただいた皆様、ありがとうございました。

回答No.5

んー、状況がきちんと読めなかったりしてますが・・ 要するに、添付図のような感覚でしょうか。  ※A:B列が元のデータで、   C:DがD列を昇順で並べ替えた後のデータです。   連番(A→C)は動かさず、データ(B→D)だけ並べ替えてます。 これで良ければ、ワークシート関数のROWだけを使って解決できます。 ROW関数の引数を省略してやると 「セル自体の行番号を返す」使い方ができます。 これを使って、連番の列(例示ではC列)に   C3セル:=ROW()-2        ※タイトル行(見出し)が2行ですから、その分は引きます。 で、行方向にフィルしてやって連番作成完了。 あとは並べ替えても行挿入・削除しても、この連番は変わりません。 ただし、歯抜け(連番の行が空白)があると少し狂います。 繰り返しますが、真意がどこにあるか読み取れていない現状です。 私の個人的な感覚だと「連番はデータ(行)に含まれるもの」なのです。 つまり、   連番:データ →(データで並べ替え)→ 連番:データ    1:A                 1:A    2:C                 3:B    3:B                 2:C であると思っていますし、 後々データを扱う際にこちらの方が便利と思うのですが・・・ その辺も踏まえて補足をいただけると、 もう少し突っ込んだアドバイスが誰かから出てくるかもしれません。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.4

>Excelで重複しないキー列を作成したい 模擬データの提示無しで回答を求めても的確な回答を得られないでしょう。 > 重複がなく、並べ替えや行の追加・削除をされても変化しない連番の作成方法がないでしょうか。 ありますよ。 しかし、模擬データの提示が無いので具体的な方法を提示できません。 後出しジャンケン的なやり取りが無駄時間なので良く考えて提示してください。

  • pc_net_sp
  • ベストアンサー率46% (468/1003)
回答No.3

リストの作成は駄目なのですか?? マクロや関数を使わずに、並べ替えや行の追加・削除をされても変化しないです。 連番は自分で入力する。 A1からC10までを選択し、選択範囲内で右クリックして「リストの作成」 駄目かな??

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.2

A1セルから下にデータが有る場合 B1セルに以下の式を入れて下にドラッグコピー =IF(ISNA(VLOOKUP(A1,A2:A15,1,FALSE)),1,0) C1セルに以下の式を入れて下にドラッグコピー =IF(B1=0,"",SUM(B$1:B1)) でいかがでしょう。

  • panacon
  • ベストアンサー率31% (214/679)
回答No.1

通番のセルの値を固定しなければならないので、常時計算の関数では駄目で、やはりVBを使って新規レコードを追加する際に、列の最大値に1と足した数字を代入することになると思います。それを避けるためには、原始的ですが、レコード削除をしないフルテーブルを別途もって、まずはそのテーブルにデータを追加して、そのレコード単位で目的の表にデータを貼り付けするしかないと思います。Accessの導入を考えたほうが楽だと思います。

関連するQ&A

  • エクセル2003で可能でしょうか?

    エクセル2003で、行を削除しても自動で連番をふりなおせる関数ROWは解るんですが、行ごと削除するときはROWは有効ですが、たとえばこんなときはどうすればよいでしょうか? A列に連番がふってある表があったとして、A1~A5セルに1~5の連番をふったときに、A3セルの連番を消し、”削除”という文字列を入力した場合、A1セル=1、A2セル=2、A3セル=”削除”、A4セル=3、A5セル=4 というように、”削除”と文字列を記入したセルを飛ばし連番が自動的にふれるという関数orマクロはないでしょうか?今は、いちいち手打ちで修正しているのですが・・。ROWとIFを使ってできないか?と考えましたがどうしても解りません。みなさんのお知恵をかしてください!!   

  • エクセルのマクロで重複データの削除

    横17列、縦、約1000行の表があります。 4行目が項目で、5行目以降は次のように並んでいます。 A列(日付)、B列~H列(各データ) I列(契約番号)J列~Q列(各データ) 縦の並び順は、ばらばらで、日付順ではありません。しかも結構重複があります。 そこで、I列の商品番号をキーにして、重複をチェックし、重複しているものは、日付が新しいものを生かし、古い方は削除しようと思います。 しかし、手作業でやるにはあまりに多すぎるため、出来ればマクロでやりたいのですが、このように高度なものは、わたしが出来るマクロの記録程度では手におえそうもありません。 どのようにやったらよいのかどなたかお教え願えませんでしょうか?

  • 【エクセル2010】表全体文字列の重複

    エクセル2010について教えて頂きたいのですが..... 【例】     A      B      C   1 あああ   ああ     ううううう 2 いいいい  ううう    かか 3 ううう    あああ   いい 4 ええ    いいい    ああああ 5 あああ   ううう     おおお と入力した場合 A行【A1】【A5】とB行【B3】が 同内容にて重複しますが この場合 [あああ]にて検索する以外 重複を見つける方法が無いのでしょうか? (つまり重複そのものを見つける機能です。) また、他の方法がある場合、 その方法では【C4】ああああ を重複として拾いますか、拾いませんか。 ちなみに実際の表は列が10、行が100ぐらいあります。 いくつかの表で同様に調べなければなりません。 マクロはよくわかりません。よろしくお願いします。

  • エクセルマクロで重複数値と以外の数値を抽出する

    数値の表を作成しておりますが、 重複数値で困っております。マクロで教えてください。 A列11~20まで1.2.2.4.5.6.6.8.9.10とあるデータに 2と6が重複しています 重複数値2.6をB列2行目以降に、C列2行目以降にはそれ以外の1.4.5.8.9.10 を抽出したいのですが、マクロで教えてください。 (offsetを使ってできますか?) また、重複数値を抽出する自作関数ってできるでしょうか? よろしくお願いいたします。

  • ACCESSでの関数について

    EXCELではROW()関数で行数を付けることが出来ますが、ACCESSで同様の方法はあるのでしょうか。クエリでROW関数を入れると未定義と出ますし、テーブルにオートナンバーの行を付けて、データを一度クエリで削除した後追加クエリを実行しても1からの連番にならないので困っています。 クエリでROW()関数と同じ方法、またはテーブルでオートナンバーを1からふり直す方法があれば教えてください。

  • Excelの列や行の幅を表示する関数を教えて

    Windows8.1。Excel. まだ使い始めて間がないのでもたもた状態です。Excelの列や行の幅や高さは、クリックするとピクセルで表示されます。これを例えば、行ナンバーを表すROW関数のように列幅や行高さを表示してくれる関数がないでしょうか? もしあったら(Excelの事ですからあると思うのですが・・)教えて下さい。 よろしくお願いします。

  • Excel 2列をを1列へ

    Excelで2列にデータが入っているものを1列にまとめる方法をご教授いただきたいです。 また、1列にまとめた後に重複するデータをまとめたいです。 添付画像がやりたいことのイメージになります。 ただし、純粋なExcelではなく、Excelをベースにした別のツールをつかっているため、使用できる関数に制限があります。 ネットで検索するとROW()関数を使用するものが多かったのですが、ROW()関数は使用できません。 使用不可能な関数:ROW()、LEFTB()、RIGHTB()、MIDB()・・・ 使用可能な関数:VLOOKUP()、MATCH()、OFFSET()・・・ 作業列を使用する方法でも構いません。 ご回答よろしくお願いいたします。

  • エクセル 行内の重複する数値

    よろしくお願いします1列の中で重複する数値の削除は データーから重複の削除で可能ですが 表全体では無理でしょうか。 表の中の重複する数値またはセルを 空白にするもしくは削除したいのですが・・・ また A1からS1までのように1行の中にある重複する数値を削除する方法はありませんか Win10 Office2010です

  • 2つのファイル(Sheet)比較して重複しないデータを追加する方法

    EXCEL2003で2つのファイル(Sheet)で同フォーマットの表(データベース)にて1つの列をキーとして比較して、重複しないデータを片方の表に追加する事は出来ますか? 一番好ましいのはマクロを組んで一発で出来るのが良いのですが、最低関数式等で出来ますか?

  • エクセル関数での重複削除

    以下のようなエクセル表があったとします。       【列A】  【列B】 【行1】   1     A社   【行2】   2     B社 【行3】   3     B社  【行4】   4     C社 【行5】   5     C社 【行6】   6     C社 この表の下のほうに、【列B】の社名を重複を削除した形で一覧表示させたいのです。この例の場合ですと、              A社              B社              C社 と表示させたいのですが。。。 フィルタ機能を使って重複を削除すれば同じようなことができるのですが、今後の更新作業を楽にするため関数でやりたいのですが、可能でしょうか。 教えてください。

専門家に質問してみよう