• ベストアンサー

重複した値をチェックするには…

fumufumu_2006の回答

  • ベストアンサー
回答No.3

>For シート数 = 2 To 10 >Sheets("購入者" & シート数).Name = Range("E2") >Next シート数 をしたいだけなら、前もって同名の個数を調べるという方法もありますが・・・ (ちなみに、変更前には、"購入者2","購入者3"..."購入者10"と言うシートがあるんですよね) それと、 >どのシートまで入力するかは一定ではありませんが とあるので、入力の無いシートは変更しません。 Dim シート数 As Integer Dim n(10) As Integer Dim i As Integer For シート数 = 2 To 10 '自分より前に何個同じ名前があるか調べて配列に入れておく For i = 2 To シート数 - 1 If Sheets("購入者" & i).Range("E2") = Sheets("購入者" & シート数).Range("E2") Then n(シート数) = n(シート数) + 1 End If Next Next シート数 'これから名前を変更 For シート数 = 2 To 10 If Sheets("購入者" & シート数).Range("E2") <> "" Then '入力のあるシートだけ If n(シート数) = 0 Then '同名が無い場合は、そのシートのE2 Sheets("購入者" & シート数).Name = Sheets("購入者" & シート数).Range("E2") Else '同名があった場合は、そのシートのE2 & 同名数+1 Sheets("購入者" & シート数).Name = Sheets("購入者" & シート数).Range("E2") & (n(シート数) + 1) End If End If Next 名前を変更する部分をiifを使って1行で済ませる方法もあります・・・ For シート数 = 2 To 10 If Sheets("購入者" & シート数).Range("E2") <> "" Then Sheets("購入者" & シート数).Name = Sheets("購入者" & シート数).Range("E2") & IIf(n(シート数) = 0, "", n(シート数) + 1) End If Next p.s. ちなみに、補足のプログラムは、同名が無い場合に動いてましたか? Sheets("購入者" & シート数).Name = Range("E2") のRange("E2")は、特定のシートを見ているんじゃないかと思いますが・・・ Sheets("購入者" & シート数).Name = Sheets("購入者" & シート数).Range("E2") にしないと、同名が無くても、動かないんじゃないかと思うんですが・・・ 特に複数のシートを扱う場合は、シートも含めたセルの指定をしないと痛い目にあいますよ、多分。

miz_k
質問者

お礼

言われたとおりにやってみたところ、まさに希望通りのことが出来ました!! なにぶんまだVBAをはじめて日が浅いので 難しいことはできないもので こういうふうに教えていただけて非常に助かりました。 本当にありがとうございました。

関連するQ&A

  • VBAで、セルの値をつなげて入力したいのですが・・・

    VBAで、セルの値をつなげて入力したいのですが・・・ エクセル2007を使用しています。 Ctrlキーで2つのセルを選択し、最初に選択したセルの値にスラッシュをつけて、 2番目に選択したセルの値をつなげ、再び1番目に選択したセルに代入したいと思っています。 例えば、A1セルに「佐藤」B1セルに「鈴木」と入力されており、 A1を選択し、Ctrlキーを押しながらB1セルを選択し、コマンドボタンを押すと A1セルに「佐藤 / 鈴木」と入力させたいと思っています。 選択するセルは、1番目も2番目も、変化します。 そこで、下記のようなマクロを書いてみたのですが、 「実行時エラー13 型が一致しません」というエラーが出ます。 Private Sub CommandButton7_Click() If Selection.Areas.Count <> 2 Then Exit Sub Dim a As Variant Dim b As Variant a = Selection.Areas(1) b = Selection.Areas(2) Selection.Areas(1) = a & "/" & b End Sub 変数の型が問題なのでしょうか? ちなみに Selection.Areas(1) = b とすると、2番目に選択した「鈴木」がA1に入力されます。 また、 Selection.Areas(1) = a & b としても同じエラーが出ます。 解決法があるなら、ご教授いただけませんでしょうか? よろしくお願いいたします。

  • エクセルで条件に一致したセルの隣のセルを取得したい

    下のような「得点」という名前のシートがあります。 (「田中」のセルがA1です。)  [ 田中 ][ 10 ][ 200 ]  [ 山田 ][ 21 ][ 150 ]  [ 佐藤 ][ 76 ][ 250 ]  [ 鈴木 ][ 53 ][ 350 ] 別のシートのA1セルに、「佐藤」と入力すると、  [ 佐藤 ] 「得点」シートから「佐藤」の列を見つけて、B1、C1に  [ 佐藤 ][ 76 ][ 250 ] のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。 「得点」シートでは氏名が重複する事はありません。 IF文を使うと思うのですが、いまいち良く分かりませんでした。 よろしくおねがい致します。

  • 基本の別シートの値と一致・不一致のチェック

    2つ目のシートのEセルとGセルの値が、1つ目のシートのAセルとQセルの値と一致しているかチェックをしたいのですが、 実際にどのような式を入れたら良いのかわかりません。 大変困ってしまっています。 何方か、ご教示頂けると大変幸いです。 1つ目のシートには基準となる値が入っています。2つ目のシートは入力されたデータが入っています。 比較するセルの値は1つ目のシートは空白は入っていませんが、2つ目のシートは、空白や全く違った値が入っています。 結果は、以下のように出力させたいです。 2つ目のシートのEセルの値と1つ目のシートのAセルの値が一致し、1つ目のQセルの値と2つ目のGセルの値が一致した時、2つ目のシートの最後の列へ『OK Aセルの値、Qセルの値』、 2つ目のシートのEセルの値と1つ目のシートのAセルの値は一致したが、1つ目のQセルの値と2つ目のGセルの値が一致しなかった時、2つ目のシートの最後の列へ『NG Aセルの値、Qセルの値』 1つ目のシートのフォーマットは、以下のようです。 Aセル     Qセル 果物     ランク オレンジ    B レモン     C バナナ     A パイナップル  D 2つめ目のシートのフォーマットは、以下のようです。 Eセル     Gセル 果物     ランク バナナ     D 空白      空白 スルメイカ   空白 鞄        B レモン      C メロン      A バナナ      A 以上 ご教示宜しくお願いいたします。

  • VBAで入力規則のリスト参照元の値取得

    エクセル2007を使っています。 VBAツールを作っており、その処理で使われる一機能として 「任意のセルに設定されている入力規則のリストの元の値をVBAで取得する」処理を コード中に書きたいと思っております。 ■質問概要  「入力規則のリスト」が設定されている任意のセルを選択したときに、そのセルに設定されている  「入力規則のリスト」の「元の値」をVBAで取得する方法について教えてください。  ※取得した値は配列型の変数に代入するものとします ■想定イメージ  たとえば、次のようなブックで使うことを想定しております(画像参照)  ※実際はもっとデータ量が多いブックで使う予定です  ・「リスト元の値」というシートで「選択言語」という名前でリストを定義化  ・「通常操作するシート」では値を入力したいセルに対し、「入力規則のリスト」の「元の値」を   「=選択言語」で設定  VBAではこの「通常操作するシート」の入力欄のセルを選択している時に「選択言語」で定義されている  データをすべて取得し配列型変数に代入するという動作をさせたいと思っています。     この方法について教えてくださいますようお願いします。

  • EXCELでワークシートを検索して値を返したい。

    こんばんは。 いろいろ調べてみたのですが、わからなかったので質問させていただきます。 EXCELで「111」「222」「333」「444」「555」という五つのワークシート名を持つブックがあります。 「111」のシートのセル"A1"に,"222"と入力すると、隣のセル"A2"にシート「222」の特定のセルの値(例えばC20のセルの値)を返し、セル"A1"に「555」と入力するとセル"A2"にシート「555」の特定のセルの値を返すといったものを作るには、どうしたらいいんでしょうか? できれば関数だけで作りたいのですが、もしむりならマクロではどういうコードになるのでしょうか? よろしくお願いします。

  • エクセルで一つのブック上のいくつかのシートのドロップダウンボダンでリスト

    エクセルで一つのブック上のいくつかのシートのドロップダウンボタン のリストで、 3枚のシートの一つのセルに、 一枚目は鈴木  2枚目はたなか  3枚目は佐藤   と同じ書式の同じ場所のセル位置にはいっていてそれをドロップダウンボタンで表示させるのに、リスト→元の値 の欄に、いちいち入力せずにクリックして選択させる方法はありますか? 一つのブックのシートの枚数が多く、同じ書式なのでクリックで選択できればと思い質問しました。 無理ならべつにシートを用意してそこにリストを選択するために、入力するかと。もかんがえていますが、それでは、エクセルの便利な機能を 使いこなしていないかと悩んでいます。 どなたか教えてください。

  • OFFICE 365 Excel - 数式の値

    OFFICE 365 Excel にお於いて、数式の値を表示させていますが、値の上限値を設定したいのですが出来ません。 Excelシート セルE3には他複数セルの合計値(整数)が表示されています。 同じくExcelシート セルB17には、数式「=(E3*300)」によって計算値が表示されていますが、この計算値の上限値を27000以下に設定するには、どうすれば良いのでしょうか教えて頂ければ幸いです。 データー→データツール→データの入力規則→設定...では出来ないのは承知しています。

  • Excelで次のような事はできますでしょうか

    こんばんわ。いつも大変お世話になります。 初歩的なことかも分かりませんが次のような事はできますでしょうか。 sheet1に以下のようなデータがはいっております。 このうち、「氏名」の欄の値から抽出(重複する氏名があってもsheet2には1つのみ表示)してsheet2に以下のように表示させたいのですが可能でしょうか。 説明不足なところがあるかもしれませんが、よろしくお願いします。 (sheet1) ┌────┬───┐ │ 氏名   │出席日│ ├────┼───┤ │ 山田○男│    5│ ├────┼───┤ │ 佐藤△子│    0│ ├────┼───┤ │ 山田○男│   2│ ├────┼───┤ │ 鈴木○夫│   3│ ├────┼───┤ │ 佐藤△子│   2│ └────┴───┘ (sheet2) ┌────┐ │ 氏名 ├────┤ │ 山田○男 ├────┤ │ 佐藤△子 ├────┤ │ 鈴木○夫 └────┘

  • 【エクセル】複数シートの値を参照して連続で表示する(一覧シートを作る)には

    いつもお世話になってます。 エクセルで教えて下さい。 Sheet佐藤    品名   単価  数量  価格 1  いちご  100    5   500 2  ばなな  200    3   600 Sheet鈴木    品名   単価  数量  価格 1  めろん  500    1   500 2  ばなな  200    5  1000 と入力されていて、これを元に、 Sheet一覧    氏名  品名   単価  数量  価格 1  佐藤  いちご  100    5   500 2  佐藤  ばなな  200    3   600 3  鈴木  めろん  500    1   500 4  鈴木  ばなな  200    5  1000 と表示させたい。 Sheet佐藤・鈴木はそれぞれ行の追加・挿入・削除されることがあり、 その都度Sheet一覧に反映させられるようにしたいのですが、どのようにしたら可能でしょうか? (例えばSheet佐藤の2行目を削除した場合、 Sheet一覧    氏名  品名   単価  数量  価格 1  佐藤  いちご  100    5   500 2  鈴木  めろん  500    1   500 3  鈴木  ばなな  200    5  1000 となるように) また、タイトルとは質問が反れますが、 「価格」の列に「=B2(単価)*C2(数量)」という式が入っている場合、 1:式を変更されたくないので保護をかけたい。 2:保護をかけると行削除が出来ない。 3:行を挿入したら自動的に同じ式が入るようにしたい。 という希望を満たすにはマクロしかないでしょうか? (マクロは初心者でほとんどわからないので・・・) どうぞよろしくお願いします。

  • EXCEL シートの値を求める

    こんにちは。こちらではいつもお世話になっています。 以下のような場合、どのような方法があるのかを教えてください。 ========================== ・1つのブックに複数毎のシート(例:シートA・シートB・シートC)があります。 ・それらシートの同じ箇所のセルの値(例:A1)を別シート(例:シートD)のA1から下に順番に入れたいと思っています。 ・シート枚数が増えても対応できるような方法であれば助かります。 【シートD】   A                  B 1 シートAのA1のセルの値 2 シートBのA1のセルの値 3 シートCのA1のセルの値 ========================== 説明が不十分であれば、申し訳ございません。 宜しくお願いします。