ウォッチ漫画『酒男子』新連載開始!

Excel上でのデータ数字が連番であることを確認する方法を教えてください。

ある列に数字5桁で、00001,00002・・・と数字が約30000件並んでいますが、
これが重複や漏れなく正しく連番が付与されることを確認したいと考えています。

目視で1件ずつ見る以外に、関数等を使って検証する方法は無いでしょうか?
Excelは2003です。
どなたか良いアドバイスをお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (7件)

列内の1行ごとの差は「1」になるはずですね。


例えば a2-a1という式をすべてに投入すれば、条件を満たしていればすべての差が「1」です。
 あとはフィルターで「1」以外の答えが入っているかどうかを確認すればいいのではないでしょうか。
    • good
    • 0
この回答へのお礼

迷いましたが、一番簡単そうなので実行させていただきました。
ありがとうございました。

お礼日時:2010/01/15 13:30

連番が前後していなくて連番の重複と漏れの確認をするだけなら隣の列に関数を入れますので列の挿入が必要となります


また、連番も前後しているようでしたら最初に番号を振っている見出し行を並び替えしてから数式を入れる方法となります

数字(連番)が入力されている列の隣に「00001」を入力し、オートフィル機能で3000件分コピーします
コピーしたその隣の列に(例えば1行目が見出し行として…)
=IF(COUNTIF($A$1:$A$30,A1)>1,"重複",IF(EXACT(A1,B1)=TRUE,"","×")) を入力し、3000件分まで数式のコピーをします

最初のCOUNTIFで重複セルを見つけ、次のEXACT関数で両隣の数字が一致しているかの検証をします
重複している場合は「重複」が返り、隣り合う数字が一致していなければ「×」が返るという意味の式です
作業セルを二つほど使いますので列を二列挿入しておいてから作業を進めるといいです
    • good
    • 0

例えばA1セルに番号など項目名があり、A2から下方に連番があるとしたら、


例えばD1セルに=IF(MAX(A:A)=SUBTOTAL(2,A:A),"OK","NG")と式を入力して判定に使います。
初めにA列を選択してから「データ」メニューから「並べ替え」を選択します。範囲の先頭行の項目では「タイトル行」にチェックをして、最優先されるキーに番号を選択して「昇順」でOKします。D1セルにOKが表示されれば第一の関門は通過です。
次にAR悦を選択してから「データ」メニューから「フィルタ」さらに「フィルタオプションの設定」をクリックします。
表示される画面で「重複するレコードを無視する」にチェックを付けてOKします。D1セルにOKが表示されれば第2の関門を通過して連続したデータが入力されていることを確認できたことになりますね。
どの数値が抜けているかなどはB2セルに=IF(A2="","",IF(COUNTIF(A:A,ROW(A1))=0,A1,""))と入力してから、そのセルをコピーし、その後に名前ボックスにB2:B30000のように入力してから「貼り付け」をすればよいでしょう。B列にはねけている数値が表示されますね。
    • good
    • 0

一例を。



連番がA列に書いてあるとします。
連番が正しく付与されているとすれば、前後の番号の差は1なので、B列に、その行の連番と1行上(もしくは1行下)の連番の差が1以外なら何かを表示するような計算式を入力する、というのはどうでしょう?

たとえば、B3セルに、「=IF(A3-A2=1,"","×")」と入力するとか。
    • good
    • 0

>重複や漏れなく正しく連番



ということであれば始まる最初のセルに
=TEXT(ROW(A1),"00000")
と連番を関数で入力してはどうですか
    • good
    • 1

行の隙間無く各セルに一つずつ数値が入力されているわけですよね。


となるとその数値と行番号の差は必ず一定になるわけですから、その数字が文字列なら*1などして数値に変換し)各数値と行番号を比較し、比較する数式(ROW関数ですね)を最下行までコピーすればわかりそうです。
    • good
    • 0

数字が入ってる列をA列とすると、


B列に連番の数字を入れて、C列でIF関数を使用し、
C列最終行の翌行でCOUNTIF関数を使用するのはいかがでしょうか?

イメージでいうと…

A列 B列 C列
---------------
1   1  ○
2   2  ○
3   3  ○
5   4  ×
5   5  ○
       1

こんなイメージです。
もしCOUNTIF関数の結果が膨大な数字になれば途中からずれているであろうことがわかりますし、数件なら重複でしょう。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcelで連番でない数字を割り出す関数

久しぶりに質問させて頂きます。

Excelのセルに





と、途中まで連番ですが、【5】が抜けているのを
探しだす関数などありますか?
これだけの数なら見ただけでも容易に探せますが、
万単位になると、目で見て探すのでは、時間がかか
りすぎます。
当方は、携帯の修理をしているもので、不具合の出
てしまったお客様の携帯を早く修理・返却したいた
め、便利な関数などありましたら教えて頂けると助
かります。
よろしくお願いします。

Aベストアンサー

たとえば、A1=1、A2=2、A3=3、A4=4、A5=6となっているとして、
B2に「=IF(A2-A1>1,"○","")」と入力して、一番下までセルをフィルすると、
番号が飛んでいるところの横にだけ○印がでます。

状況が良くわからないのですが、この文面からだとこんな感じで大丈夫だと
思うんですが。。。

Qエクセルで欠番を見付けるには

 エクセルで、連番の付いたデータを処理するとき、何番が欠番かを発見して、その番号をピックアップする方法を教えていただけますか。

Aベストアンサー

A列に番号があるとして、C列に欠番の無い列を作ります。(フィルで連番を作る。)
D列に=vlookup(C1,A:A,1,FALSE)とし、下へコピー
欠番は#N/Aが表示されます。

Qエクセルで重複しているデータの抽出のしかたを教えてください。

エクセルで重複しているデータを抽出したいのですが・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。
A列に日付 B列に企業名このデータが300件ほどあります。

 Å列      B列
1月 1日    AAAA社
1月 4日   BBBB社
1月 8日   CCCC社
2月 1日   BBBB社
2月20日    DDDD社
3月 2日   AAAA社

と、あるとしてB列の企業名が重複しているものを抽出したいのですが・・・。この場合 AAAA社とBBBB社ですが。
これを簡単に抽出する方法はないでしょうか?
教えてください お願いいたします。

Aベストアンサー

企業名がセルB2からセルB300まで入力されていると仮定します。
セルC2に IF(COUNTIF($B$2:B2,B2)>1,"*","") を入力し、セルC300までコピーして下さい。すると重複したデータの二番目以降に "*" のマークが付きます。
(注) 数式を下のセルまでコピーするため、COUNTIF($B$2 は絶対参照にして下さい。

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

Qエクセルで、条件の合うものだけに連番をつけたいです。

A列に連番があります。この番号は変えることができません。
B列に、条件を満たすセルだけに別の連番をつけたいです。例えば、D列がTRUEである行が1,5,6…とあったとすれば、B1が1、B5が2、B6が3…といった具合にです。
よろしくお願いします。

Aベストアンサー

D列の適当なセルに「TRUE」と入力されているのであれば、

B1に=IF(D1,1,"")
B2に=IF(D2,COUNT(B$1:B1)+1,"")として以下コピー

ではいかがでしょうか。

Qエクセル・・色の着いたセルの個数を数える関数はある?

エクセルの表内で塗りつぶしされているセルだけを数える様な関数はありますか?
セルには文字や数値は入力されておらず、塗りつぶしているだけです。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

ユーザー定義関数で作ってみました。Ver4 マクロ関数で十分だと私は思いますが、Ver 4 マクロ関数ではケシカランというような方?は、以下のようなVBAでの解決方法が便利かなって思います。

VB Editor の標準モジュールに貼り付けてください。(挿入-標準モジュール)

なお、一般のブックの標準モジュールのユーザー定義関数に、Public キーワードをつけたところで、グローバル関数になるわけではありませんので、もしその点に不安のある方は、マニュアル等で、確認されたほうがよいかもしれませんね。

なお、以下は、引数のインデックスに0を入れると、配列出力するようにしてあります。

'------------------------------------
Function ColorCellCount(範囲 As Range, Optional インデックス As Integer = 1, Optional パターン As Integer = 0)
  Dim myRng As Range
  Dim myIndex As Integer
  Dim myPattern As Integer
  Dim myColor() As Integer
  Dim Ret() As Double
  Dim c As Range
  Dim i As Long
  Dim j As Long
  Set myRng = 範囲
  myIndex = インデックス
  myPattern = パターン
For Each c In myRng
   On Error Resume Next
   If myPattern = 0 Then
     i = WorksheetFunction.Match(c.Interior.ColorIndex, myColor, 0)
   Else
     i = WorksheetFunction.Match(c.Font.ColorIndex, myColor, 0)
   End If
   If i = 0 Then
     ReDim Preserve myColor(j)
     ReDim Preserve Ret(j)
      If myPattern = 0 Then
       myColor(j) = c.Interior.ColorIndex
      Else
       myColor(j) = c.Font.ColorIndex
      End If
      Ret(j) = 1
     j = j + 1
     On Error GoTo 0
     Else
      Ret(i - 1) = Ret(i - 1) + 1
   End If
  Next
  If myIndex <= 0 Then
   ColorCellCount = Ret()
  ElseIf myIndex > UBound(Ret) + 1 Then
   ColorCellCount = Ret(UBound(Ret()))
   Else
   ColorCellCount = Ret(myIndex - 1)
  End If
  Set myRng = Nothing
End Function

ワークシート上での使い方は、

A列
色付き
色なし
色なし
色付き
色付き

=ColorCellCount(A1:A5, 1 )

とすれば、上から数えて、1番目の色のセルの数が出ます。

=ColorCellCount(A1:A5, 2 )
を入れれば、色なしのセルの数が出ます。

=SUMPRODUCT(ColorCellCount(A1:A5, 0 ))

とすれば、全部の合計が出ます。

なお、
=ColorCellCount(A1:A5,1,1)

とすれば、文字の色を数えます。

こんにちは。

ユーザー定義関数で作ってみました。Ver4 マクロ関数で十分だと私は思いますが、Ver 4 マクロ関数ではケシカランというような方?は、以下のようなVBAでの解決方法が便利かなって思います。

VB Editor の標準モジュールに貼り付けてください。(挿入-標準モジュール)

なお、一般のブックの標準モジュールのユーザー定義関数に、Public キーワードをつけたところで、グローバル関数になるわけではありませんので、もしその点に不安のある方は、マニュアル等で、確認されたほうがよいかもし...続きを読む

QExcelで連続したデータの個数を調べる方法

初めて質問させて頂きます。


現在、下記のような形式のファイルを作成しています。












ある条件式にて1か2のフラグをたてて、それを日付データの横に記述させるようにしています。

一番下が最新のデータになるのですが、ここで2が1に変わってから何個目(何日目)と言うのを得たいのですが(この例だと2が1に変わって5日目)、どのような関数を使えば良いか分かりません。

基本的な質問かもしれませんが、どうぞよろしくお願いいたします。

Aベストアンサー

関数はifを使用します。
 A|B
1| |
2|2|1
3|2|2
4|2|3
5|1|1
6|1|2
7|1|3
8|1|4
9|1|5

この場合、B1の式は
=IF(A2=A1,B1+1,1)
になります。
これをB1に入力して、B1のセルの右下にある四角形を下へドラックしてコピーしてください。式は自動的に変わります。
式を詳しく説明するとまずフラグが変わったか変わってないかを判定し、変化があるのならば1を代入します。
変化がないのならば上の数値に1を加算します。
またこの式をA行にコピーすると当然エラーになるので、データは2行目から入力してください。1行目から入力するのならばB1は1と入力してください。
ちなみにこの式はフラグがいくつに増えても大丈夫です。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング