AIと戦って、あなたの人生のリスク診断 >>

WindowsXPのOffice 2003を使用しています。

EXCELで以下のような表があるとします。

001 リンゴ 300円
003 みかん 150円
004 スイカ 500円
006 メロン 900円
008 プラム 400円
009 レモン 100円

一番左の列は品番のようなものです。それぞれに商品名と料金などの付随する情報があります。

現在品番は欠番があって数字が飛んでいます。これに対して、欠番のない通し番号の列を新規に作り、以下のように品番が通し番号と同じ数字の行に自動で並ぶようにしたいのです。

001 001 リンゴ 300円
002
003 003 みかん 150円
004 004 スイカ 500円
005
006 006 メロン 900円
007
008 008 プラム 400円
009 009 レモン 100円


実際には通し番号は6桁になるため、かなり膨大な量の商品があると考えてください。

当方、マクロについては詳しくありません。なるべく簡単な方法で解決できる方法がありましたらご教授ください。マクロを使った方法の場合、お手数ですがどのようにそのマクロを設定したらいいかまで具体的に1からご指導いただけるととても助かります。

よろしくお願いします。

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

A 回答 (2件)

いろいろ方法はあると思いますが。

ご質問の例を使って書きます。
まず、最初の欠番のある表をちょっと離れたk列あたりから作ります。
ですからKに品番、Lに品名、Mに価格となるようにします。(例では6行ですので表はH1からM6になります)
そして、A列に001から009まで縦に番号を付けます。その後、B1セルに
=IF(ISERROR(VLOOKUP($A1,$K$1:$M$6,1,FALSE)),"",VLOOKUP($A1,$K$1:$M$6,1,FALSE))として縦にコピー、C1セルに=IF(ISERROR(VLOOKUP($A1,$K$1:$M$6,2,FALSE)),"",VLOOKUP($A1,$K$1:$M$6,2,FALSE))として縦にコピー、D1セルに=IF(ISERROR(VLOOKUP($A1,$K$1:$M$6,3,FALSE)),"",VLOOKUP($A1,$K$1:$M$6,3,FALSE))として縦にコピーとすればできると思いますよ
    • good
    • 1
この回答へのお礼

早速ありがとうございます!

ご指示いただいたとおりに試してみたところ、完璧に解決できました。大変助かりました。ありがとうございます。

お礼日時:2009/07/14 08:59

   A   B    C  D  E   F    G


1  001 リンゴ 300円   001 リンゴ 300円
2  003 みかん 150円   002       
3  004 スイカ 500円   003 みかん 150円
4  006 メロン 900円   004 スイカ 500円
5  008 プラム 400円   005       
6  009 レモン 100円   006 メロン 900円
7  …  ……  ……   007       
8  …  ……  ……   008 プラム 400円
9  …  ……  ……   009 レモン 100円
10 …  ……  ……   …  ……  ……

次の[条件付き書式]を設定したセル F1 に式 =VLOOKUP($E1,$A:$C,COLUMN(B1),FALSE) を入力して、此れを右および下方にズズーッとドラッグ&ペースト
   数式が   =ISERROR(F1)
   フォント色 白
「EXCELで通し番号の行に欠番有りの番号」の回答画像2
    • good
    • 1
この回答へのお礼

ご指示いただいたとおりに試してみたところ、要件通りに解決できました。条件に適応しないセルは白地で隠す、という方法ですね。画像までご用意いただき、大変ありがとうございます。

お礼日時:2009/07/14 16:37

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

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

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

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

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

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

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

Aベストアンサー

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

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

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

Excelのセルに





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

Aベストアンサー

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

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

Q任意の整数まで欠番行を挿入するマクロは?

エクセルのSheet1のA列の1行目から下の行へ1から1000まで数字(整数)が入っているとします。ただし、欠番があります。そこで、欠番を挿入して行を増やしたいのですが、すべての整数を挿入するには以下のマクロで解決しているのですが、任意の整数(下二桁が同じ整数)まで挿入したら次の桁へ飛んで、また同じ任意の整数(下二桁が同じ整数)まで来たら次の桁へ飛んでという具合に、これらを繰り返したいのです。例えば、1から46まで、100から146まで、200から246まで、300から346までという具合です。どなたかご教授よろしくお願いします。


Sub 欠番挿入()

Dim i As Integer

i = 0
Do Until ActiveSheet.Range("a2").Offset(i, 0).Value = ""

ActiveSheet.Range("a2").Offset(i, 0).Activate

If ActiveCell.Value <> ActiveCell.Row Then
Rows(ActiveCell.Row).Insert
ActiveSheet.Range("a2").Offset(i, 0).Value _
= ActiveCell.Row
End If

i = i + 1
Loop

End Sub

エクセルのSheet1のA列の1行目から下の行へ1から1000まで数字(整数)が入っているとします。ただし、欠番があります。そこで、欠番を挿入して行を増やしたいのですが、すべての整数を挿入するには以下のマクロで解決しているのですが、任意の整数(下二桁が同じ整数)まで挿入したら次の桁へ飛んで、また同じ任意の整数(下二桁が同じ整数)まで来たら次の桁へ飛んでという具合に、これらを繰り返したいのです。例えば、1から46まで、100から146まで、200から246まで、300から346ま...続きを読む

Aベストアンサー

> 100までは49までの欠番が挿入され、100以上は何も変化がありませんでした。

質問では46まででしたし、テストが甘かったみたいで、ちゃんと動かなかったですね。
以下のように変更してみてください。

Sub 欠番挿入()

Dim i As Integer, myAnyValue As Integer

myAnyValue = 46

For i = 0 To 999
If ActiveSheet.Range("a1").Offset(i, 0).Value = "" Then
Exit Sub
End If
ActiveSheet.Range("a1").Offset(i, 0).Activate
If i <> 0 Then
If ActiveCell.Value - ActiveCell.Offset(-1, 0) <> 1 _
And ActiveCell.Offset(-1, 0).Value < myAnyValue Then
Rows(ActiveCell.Row).Insert
ActiveCell.Value = ActiveCell.Offset(-1, 0).Value + 1
End If
End If
If i = myAnyValue Then
myAnyValue = myAnyValue + 100
i = Int(myAnyValue / 100) * 100 - 1
End If
Next

End Sub

> 100までは49までの欠番が挿入され、100以上は何も変化がありませんでした。

質問では46まででしたし、テストが甘かったみたいで、ちゃんと動かなかったですね。
以下のように変更してみてください。

Sub 欠番挿入()

Dim i As Integer, myAnyValue As Integer

myAnyValue = 46

For i = 0 To 999
If ActiveSheet.Range("a1").Offset(i, 0).Value = "" Then
Exit Sub
End If
ActiveSheet.Range("a1").Offset(i, 0).Activate
If i <> 0 Then
If ActiveCell.Value - Ac...続きを読む

Qexcelで欠番を探す方法

excelで欠番を探す方法

3ケタの数字(例;100~199)の数字をランダムに入力し昇順に並び変えた時に
欠番を表示させる方法をご存じないでしょうか?
※欠番を赤など色を変えて表示出来ればなおよしです。

初心者なので難しいことは分りませんが、どうぞ宜しくお願いします。

Aベストアンサー

次の情報が参考になると思います。いろんな方法がありますが、適宜取捨選択下さい。

参考URL:http://soudan1.biglobe.ne.jp/qa1034895.html

Qエクセルで連続している数字について

エクセルで質問です。
A列に連続して並んでいる数字の中に、
歯抜けになっている数字があります。
例)
1
2
3
5
9
10
11
13




抜けている数字の箇所に空白のセルを挿入したいのですが、
どうすれば良いのでしょうか?
初歩的な質問ですいません。
宜しくお願い致します。

Aベストアンサー

最大数が10000とする。かつ重複なし。

B1からB10000に連続番号1-10000を記入する。下記。
B1=1としB1を選択、編集>フィル>連続データ 範囲は「列」停止値「10000」。

C1=IF(COUNTIF(A:A,B1)=1,B1,"") フィルハンドルをダブルクリック。
C列が目的のもの。

___A__B__C
1__1__1__1
2__2__2__2
3__4__3
4__7__4__4
5__8__5
6_10__6
7_____7__7
8_____8__8
9_____9
10___10_10

Q歯抜けの番号を埋めて行の挿入

部門 コード 商品名 業者 単位 分類 出数 原価 直営 単価差益

 3    1   油   油屋    缶  油    1  500  550  50
 3    2   水   水屋  リットル  水   1  500  550  50
 3    5   栗   栗屋    kg  野菜   1  500  550  50
 3    8   筍   筍屋    kg  野菜   1  500  550  50

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
上の図を下の図の様に歯抜けになっている番号を入れたいのですが、地味な作業で入れていくにはかなりの量がありまして、何か良い方法がありましたら教えてください。

部門 番号 コード 商品名 業者 単位 分類 出数 原価 直営 単価差益

 3   1   1   油   油屋    缶  油    1  500  550  50
 3   2   2   水   水屋  リットル  水   1  500  550  50
     3   
     4 
 3   5   5   栗   栗屋    kg  野菜  1  500  550  50
     6
     7 
 3   8   8   筍   筍屋    kg  野菜  1  500  550  50
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

部門 コード 商品名 業者 単位 分類 出数 原価 直営 単価差益

 3    1   油   油屋    缶  油    1  500  550  50
 3    2   水   水屋  リットル  水   1  500  550  50
 3    5   栗   栗屋    kg  野菜   1  500  550  50
 3    8   筍   筍屋    kg  野菜   1  500  550  50

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
上の図を下の図の様に歯抜けになっている番号を入れたいのですが...続きを読む

Aベストアンサー

VBAを使います。
「フォーム」のツールバーからボタンを選択して好きなところにボタンを貼り付けます。
「マクロの登録」で「新規登録」以下のコードを貼り付けてください。
ワークシートのデータの範囲に、「範囲」という名前を付けます。
ボタンを押せばOK。

-------------------------

Sub ボタン1_Click()
Dim arange As Range
Set arange = Range("範囲")
Max% = arange.Rows.Count
i% = 1
While i% < Max%
If arange.Cells(i%, 2) <> arange.Cells(i% + 1, 2) - 1 Then
arange.Rows(i% + 1).Insert
arange.Cells(i% + 1, 2) = arange.Cells(i%, 2) + 1
Max% = Max% + 1
End If
i% = i% + 1
Wend
End Sub

VBAを使います。
「フォーム」のツールバーからボタンを選択して好きなところにボタンを貼り付けます。
「マクロの登録」で「新規登録」以下のコードを貼り付けてください。
ワークシートのデータの範囲に、「範囲」という名前を付けます。
ボタンを押せばOK。

-------------------------

Sub ボタン1_Click()
Dim arange As Range
Set arange = Range("範囲")
Max% = arange.Rows.Count
i% = 1
While i% < Max%
If arange.Cells(i%, 2) <> ara...続きを読む

Q行に連番をつけたいのですが、空白セルには番号をつけないようにしたい。

A  B
1  10
2  20
   (空白)
3   25

B列のセルに数値の入力があった場合に、A列にナンバーを連番でつけていきたいのですが、できますでしょうか?

よろしくお願いします。

Aベストアンサー

#2です。
4行目「A4以下はA2をコピーする」は「A4以下はA3をコピーする」の間違いです。
たびたびすいません。

Qエクセルで特定の行を削除したいのですが。

エクセルで特定の行を一発で削除したいのですが、やり方がわかりません。
どなたか詳しい方お教えいただけませんでしょうか?

やりたいことは、B列に、特定の文字が有れば、その行全部を削除して上方向にシフトしていきたいのですが、マクロとかを使うのでしょうか?
宜しくお願いいたします。

Aベストアンサー

マクロを使う別の方法です。
XXXの部分を特定の文字に置きかえて実行してください。
また、「特定の文字があれば」というのが、その文字列を含む、というのでなくセルの値がその文字列ならば、というのであれば、LookAt:=xlPart の部分を LookAt:=xlWhole に書き換えてください。

Sub DelLines()
  Dim R As Range
  Do
    Set R = ActiveSheet.Range("B:B").Find(What:="XXX", LookAt:=xlPart)
    If R Is Nothing Then Exit Sub
    R.EntireRow.Delete
  Loop
End Sub

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行までとしていますが、必要に応じて変更して下さい

QExcelで[表1]にあって、[表2]にないものを抽出する関数

Excelで[表1]にあって、[表2]にないものを抽出する関数

例)[表1]   [表2]
   A社     A社
   D社     D社
   R社     P社
   P社     R社
   D社
   F社
   F社

上記は簡単に書きましたが、表1に重複するものも含め、300社程度あるなかで
表2にリストアップされていない会社を見つける関数やその他方法論があれば
ぜひ教えてください!
(例でいえば、F社を見つける方法です。)

抽出するのは別シートでも、同じシートでも構いません。

Excel2003でも対応できるものであれば、なお嬉しいです。

よろしくお願いします。

Aベストアンサー

Countif関数で同じものがいくつあるか数えさせます。
   A   B        C
  [表1]表2にある数   [表2]
   A社          A社
   D社          D社
   R社          P社
   P社          R社
   D社
   F社
   F社
だとして
B列に =Countif(C:C,A2)
と入れて下までコピィすれば 表2に同じものがいくつあるか出ますので
0 がないものです。


人気Q&Aランキング