エクセルの管理No.付与の際のいいアイデアを教えていただきたいです。

シートが2つあり、1つ目にはA-1,A-2,…、B-1,B-2…、C-1,C-2…といった管理No.をつけた表があり、バラバラの順番です。
A-1
C-1
A-2
B-1
A-3
B-1
↑こんな感じです。

日々増えていくもので、用事のすんだものからコピーペーストで2つ目のシートへ移動させてます。

そのため、新しく管理ナンバーを付与させる場合、2つのシートを見比べないと分からず、度々同じNo.を付与してしまうことがあるのです。

別表に使用した管理No.を付け加える方法も考えはしましたが、芸が無く工数もかかってしまうため、できれば簡単に、最新の管理No.がわかるアイデアが欲しいと思っています。

説明下手で分かりにくいかと思いますが、よろしくお願いいたします。

A 回答 (6件)

#3の補足読みました


>そこでもう1点訊きたいのですが、A-1をA-0001と表示させたい場合はどうすればいいのでしょうか?
対応してみました

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
If Intersect(Range("a:a"), Target) Is Nothing Then Exit Sub
For Each Rng In Target
If Rng.Value = "" Then Exit For
Select Case Rng.Value
Case "a", "A"
Rng.Value = "A-" & Evaluate("text(COUNTIF(sheet2!A:A,""a*"")+COUNTIF(A:A,""a*""),""0000"")")
Case "b", "B"
Rng.Value = "B-" & Evaluate("text(COUNTIF(sheet2!A:A,""b*"")+COUNTIF(A:A,""b*""),""0000"")")
Case "c", "C"
Rng.Value = "C-" & Evaluate("text(COUNTIF(sheet2!A:A,""c*"")+COUNTIF(A:A,""c*""),""0000"")")
End Select
Next Rng
End Sub
    • good
    • 0
この回答へのお礼

ご丁寧に回答ありがとうございます。
この機会にマクロをもっと勉強してみたいと思います。
ありがとうございました。

お礼日時:2009/05/01 16:37

No4です。

投函した後に気がついたのでもう少し。
一般的?オーソドックスなシートの構成ですが
 A  B  C
用事 項目 番号 と分けて
済み A    
済み C    
   A
   B
   A
・・・として、C列には
=IF(B2="","",COUNTIF(B2:B$2,B2)) と入れて下へコピィしておきます。
C列の書式は、ユーザー定義で 00000 とでもしておきます。
B列に A とか入力すれば、次の番号が自動で表示されます。
最初のシートの構成で複雑なことをして、後々、厄介になってしまった事例だと思いました。
取り合えず参考までに、新しいシートでも作成して試してみてください。
    • good
    • 0

一応、アイディアとしてです。


>用事のすんだものからコピーペーストで2つ目のシートへ移動させてます。
この作業すら手がかかると思います。
 A  B
用事 管理番号
済み  A-1
済み  C-1
    A-2
済み  B-1
    A-3
    B-1
・・・と一列追加して、用事が済んだものマークを入れる。
処理済と未処理を仕分けるにはオートフィルターを使用する方法は如何でしょうか。
1枚のシートですみます。
ちなみに、1行目、2行目に
1行目  A  B  C ・・・と準備
2行目に =MAX(IF(LEFT($B3:$B1000,1)=A1,RIGHT($B3:$B1000,1)*1,0))
と入れてCtrl+Shift+Enter で決定して配列関数にします(式が{}でくくられます。
出来た式を右へコピィします。
*上記式ではB列の3行目から管理番号があるとしています。
A,B,Cそれぞれで始まる管理番号の末尾の最大値が得られます。
もし末尾の番号が4桁であれば式中の RIGHT($B1:$B1000,4)としてみてください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
今回はコピーする手間がかかっても2シートにしたい理由がありますので申し訳ありません。
ただNo.4No.5の方法で一度試してみました。
こんなやり方もあるのかと関心しましたし、配列関数自体初めて聞いた言葉だったのでとても勉強になりました。
親切にどうもありがとうございました。

お礼日時:2009/05/01 16:29

マクロでよければ


詳細が無いので
1つ目のシート名:Sheet1
1つ目のシート管理No.:A列
2つ目のシート名:Sheet2
2つ目のシート管理No.:A列
とします

Sheet1のシートタブを右クリック
コードの表示を選択
表示されるワークシートモジュールへコードをコピペ

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
If Intersect(Range("a:a"), Target) Is Nothing Then Exit Sub
For Each Rng In Target
If Rng.Value = "" Then Exit For
Select Case Rng.Value
Case "a", "A"
Rng.Value = "A-" & Evaluate("COUNTIF(sheet2!A:A,""a*"")") + Evaluate("COUNTIF(A:A,""a*"")")
Case "b", "B"
Rng.Value = "B-" & Evaluate("COUNTIF(sheet2!A:A,""b*"")") + Evaluate("COUNTIF(A:A,""b*"")")
Case "c", "C"
Rng.Value = "C-" & Evaluate("COUNTIF(sheet2!A:A,""c*"")") + Evaluate("COUNTIF(A:A,""c*"")")
End Select
Next Rng
End Sub

Sheet1のA列(管理No.)に"A"・"B"・"C"のどれか一文字を入力すると
最新の管理No.が表示される
マクロ以外が希望なら、スルーしてください
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
マクロだとこんなことも出来るんですね。感激です。
さっそく利用させていただきます。
そこでもう1点訊きたいのですが、A-1をA-0001と表示させたい場合はどうすればいいのでしょうか?

お礼日時:2009/04/30 13:01

こんばんは!


参考になるかどうか判りませんが・・・
Sheet2のA列にコピー&ペーストした管理NOがあり、
Sheet1のA列に新たに管理NOを入力すると仮定します。

B列を作業列とする方法ですが、
Sheet1のB1セルに
=IF(COUNTIF(Sheet2!A:A,A:A)>0,"×","")
としてオートフィルでドラッグしてみてはどうでしょう?

もし重複する管理NOが入力された場合は「×」が表示され、重複がなければ空白になります。
(空白の変わりに「○」が表示される方法もいいかもしれません)

この程度の回答ですが、
参考になれば幸いです。m(__)m
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
この方法だと他にもいろいろと応用が利きそうでいいですね。
参考になりました、ありがとうございます。

お礼日時:2009/04/30 12:57

お一人で使うには少々大がかりですが、下記の様な方法もあるそうです。


http://www.asahi-net.or.jp/~ef2o-inue/download/s …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
今回の件には少し難しくて応用できませんでしたが、
このサイト自体とても勉強になりました。
ありがとうございました。

お礼日時:2009/04/30 12:53

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

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

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

Q=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $

いつもお世話になってます。
以下の関数式について、お時間がありましたらどうぞご教示ください。

=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $12,2,FALSE))

「シート2の範囲指定した表にA1セルの値と同じ値の右隣になる値を返せ。ただし該当なき場合は空白とせよ。」

純粋になんでこのような構文になるのかが解りません。

1.ISNAってそもそもなんでしょう?
2.同じ式を繰り返すのはなぜ?
(模範式で、このように同じ式を繰り返す構文があまり無いように思えたのです。)

・参考となる他所のページがあれば教えて下さい。
・素人です。お手柔らかにお願いします。

(エクセル2003)

Aベストアンサー

1.ISNAってそもそもなんでしょう?
ISで始まる情報関数の一つで、#N/A!エラーのみを判定する関数
結果はTRUE(真),FALSE(偽)のいずれかになります。
エラー判定のIS関数には他に
ISERR:#N/A!を除くすべてのエラーを判定する関数
ISERROR:すべてのエラーを判定する関数
があります。

2.同じ式を繰り返すのはなぜ?
ISNAの判定する値がセルでなく数式の結果だからです。
A2=VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)
なら
A3=IF(ISNA(A2),"",A2)
ということになります。A2のように計算の為のセルを省略する為に
=IF(ISNA(数式),"",数式)のように同じ数式を2回繰り返しになってます。

Qエクセルで同じA列の中に、1,2,3,4,5,6,2,3,4,2,1,3,2,2,2,3,1という

エクセルで同じA列の中に、1,2,3,4,5,6,2,3,4,2,1,3,2,2,2,3,1,3,1というような順番で数字が並んでいます。

その数字の中で、1→3と3→1になるものがいくつあるか求めたいのですが、出す関数・マクロがわかりません。
教えていただけないでしょうか?

よろしくお願いします。

Aベストアンサー

こんばんは!

>A列の中に
とは行方向に数値が入っている!というコトでしょうか?

そうであれば
表示したいセルに
=COUNTIFS(A1:A1000,1,A2:A1001,3)+COUNTIFS(A1:A1000,3,A2:A1001,1)
としてみてください。

「1」の次の行が「3」の場合と
「3」の次の行が「1」の場合をプラスしています。m(_ _)m

QEzcel 2003で、A1,A2,・・・A10,A12の並びかは?

Ezcel 2003で、A1,A2,・・・A10,A12を、並び替えすると、A1,A10とA1の次にA10が来てしまいます。これを、A1,A2,・・・A10,A12のようにするには、どうしたら良いのでしょうか?
よろしくお願い致します。

Aベストアンサー

A01,A02,・・・A10,A12
として、桁数を揃える必要があります。

QExcelで、ある列に入力している文字にa,b,cと付け加えたい

Excelで次のようなことをする方法を教えて下さい。

一つの列に次のように入力されています。
0001
0001
0001
0002
0002
0003
0003
0003
0003
0004

このあと0005、0006、・・・・と千行ほど続きます。
(上の例では0001が3行、0002が2行続いていますが、
同一のものが何行続くかに規則性は無く、一行のみのものや8行
くらい続くものもあります)

これにa,b,cを加えて

0001a
0001b
0001c
0002a
0002b
0003a
0003b
0003c
0003d
0004a

というように同じ文字が並んでいる間はa,b,c・・・と付け加えられ
文字が0001から0002などに変化すると付け加えられるアルファベットがaにもどって、そこから文字が変化するまでa,b,cと入力させたいのですが、これを自動的に入力する方法はないでしょうか?

よろしくお願いします。

Aベストアンサー

ある列 が A列なら
B1に =IF(A1="","",A1&CHAR(COUNTIF($A$1:$A1,A1)+96))
これをB2下方向にドラッグ

Qシート2とシート3のA,B,Cの列の文字列と一致する行の特定の項目をリンクさせる方法

仕事で困っていることがあります。まず、excel 2013 ブックでシート1に雛形、そしてシート2に伝票台帳、そしてシート3に伝票ごとの売上げが記入されています。また、シート1の雛形に入力し、コマンドボタンをクイックすると、シート2、シート3へ自動転記されるようにしています。シート2はA1:K1まではそれぞれ、伝票種別(A1),伝票番号1(B1),伝票番号2(C1),日付(D1),取引先(E1),商品名(F1),個数(G1),売価(H1),金額(I1),部門(J1),入金日(K1)が記入され、それぞれその下の行から記入されるようになっています。シート3はA1:G1まではそれぞれ、伝票種別(A1),伝票番号1(B1),伝票番号2(C1),日付(D1),取引先(E1),合計金額(F1),入金日(G1)が記入され、それぞれその下の行から記入されるようになっています。そこで本題になるのですが、今、現在は入金されたときにシート3の入金日に日付を入れればシート2に入金日がリンクされるようにコピーしてリンクさせているのですが、非常に手間がかかっています。VBA等でシート3のH1あたりにコマンドボタンを作ってボタンを押せばリンクさせる方法はないでしょうか。まだ、VBAに関しては初心者なので教えて頂けないでしょうか。可能かどうかもわからない初心者で非常に困っております。よろしくお願いします。

仕事で困っていることがあります。まず、excel 2013 ブックでシート1に雛形、そしてシート2に伝票台帳、そしてシート3に伝票ごとの売上げが記入されています。また、シート1の雛形に入力し、コマンドボタンをクイックすると、シート2、シート3へ自動転記されるようにしています。シート2はA1:K1まではそれぞれ、伝票種別(A1),伝票番号1(B1),伝票番号2(C1),日付(D1),取引先(E1),商品名(F1),個数(G1),売価(H1),金額(I1),部門(J1),入金日(K1)が記入され、それぞれその下の行から記入されるようになっています。シー...続きを読む

Aベストアンサー

「雛形」(入力用のシートのことでしょう)を使うという話から、おそらくシート2とシート3の各行が正確に対応しているのであろうと思います。ならば:

シート2のK2に
=if(Sheet3!G2="","",Sheet3!G2)
と書き込む。これは、シート3のセルG2が表示している値を、シート2のセルK2にも表示する(ただし、シート3のセルG2が空欄の場合には、シート2のセルK2を空白にしておく)という式です。なので、シート3のG2の値を変更すれば、即座に自動的にシート2のK2の値も変更されます。

 さて、シート3のセルK2から下へうーんと沢山のセルを選択しておいて「下方向へコピー」をやりますと、シート2のセルK3には
=if(Sheet3!G3="","",Sheet3!G3)
シート2のセルK4には
=if(Sheet3!G4="","",Sheet3!G4)
という風に、選択した部分にも式が自動的に書き込まれますんで、これで出来上がり。


人気Q&Aランキング

おすすめ情報