• ベストアンサー

列に番号を打つ

セルA3から1から順番に番号を付けようと思います。(A3=1,A4=2,A5=3,・・・・・・・)条件はこんな条件です。B列に何かデーターが入った時に(データーがない時は隣のA列は空白です)隣のA列に番号が付く。最初にデーターが入るのはセルB3から順番に下に入っていきます。データーはどこまで入るか決まっていません。A3のセル(=if(B3="","",A2+1))に関数を書くことが出来ません。(A列のセルにデーターがあるとB列にデーターがうまくコピーされません)つまりB3にデーターが入ってからA3に番号を打つようにVBAでよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

Sheet1で行うとして、Sheet1のコードウインドウに貼り付けます。B列の入力は順に連続して行うとしています。 B列に複数セルを貼り付けても機能するはずです。B列のセルを消去すればその横のA列セルも未入力になります。 こういうことだったのでしょうか。ご参考に。 Private Sub Worksheet_Change(ByVal Target As Range)   Dim rg As Range 'セル   On Error GoTo ErrorHandler   Application.EnableEvents = False   For Each rg In Target     'B列、3行目より下     If rg.Column = 2 And rg.Row >= 3 Then       If rg.Text <> "" Then         rg.Offset(0, -1) = rg.Row - 2       Else         rg.Offset(0, -1) = ""       End If     End If   Next   Application.EnableEvents = True   Exit Sub ErrorHandler:   Application.EnableEvents = True End Sub

kkazumi
質問者

お礼

いつもいつも、ありがとうございます。思ったとおり出来ていました。また、よろしくお願いします。・・・カズミ

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

質問の意味が1点捉えにくくて。 (1)入力前当初はB列は全て空白ですよね。 (2)B列にデータが入力されると、その瞬間に    その同行(ぎょう)A列に番号が現われる    ようにするのですよね。 (3)例えばB5に、B列では2番目に、データ入力があった   としてA5セルに入れる番号は、3ですか2ですか    か。    3のタイプならA5セルに=if(b5="","",row()-3+1)   ではどうですか。(row()の()内は何も入れない    こと)     

kkazumi
質問者

お礼

やっぱり、A列のセルにデーターがあるとB列にデーターがうまくコピーされません。(=if(b5="","",row()-3+1))VBAで問題が解決しました。どうもありがとうがざいました。

関連するQ&A

  • エクセル関数内の行番号を同じにしたい。

    A列にYesかNoを選ぶセルがあり、Yesの場合は、隣の列(B列)に "ここをクリック" という文字列を出し、別シートの同じ場所に飛び、そして、Noの場合は、隣の列(B列)に "OK"という文字列を出して終わり。ということがやりたいです。 1.B1に以下の関数を入力しました。 =IF(A1="Yes", HYPERLINK("#sheet2!A1","こちらをクリック"),IF(A1="No","OK"," ")) 2.これをコピーしてB2以下に反映しようと考えました。ですが、 リンク先の"#sheet2!A1"のA1の行番号が以下のように、増えてくれません。 =IF(A2="Yes", HYPERLINK("#sheet2!A1","こちらをクリック"),IF(A2="No","OK"," ")) 3.コピーするだけで、"#sheet2!A1"の部分のセルが1つ繰り上がるように(この場合、A1からA2に)するには、どのようにしたらいいのでしょうか? 4. 3.が出来ない場合、何か他の方法を教えて頂きたく。 5.当方、VBAの知識がないので、マクロを組みたくても組めないのが現状です。 以上よろしくお願いします。

  • (エクセル)表から1列の別表をつくりたい。

    表に入力されたものを1列に並び替えをしたいのです。(エクセル関数) エクセルの表から、セルに入力された情報を抜き出し、並び替えたいのですが、行き詰ってしまい質問させていただきます。 (やりたいこと) 添付資料のように、事業所ごとに購入した物品が日付ごとに入力されていきます。この表を一列で並び替えることを したいのですが、現状の表の形で1列に抜き出すやり方が思い浮かびません。ひとつずつリンクを設定していけばいいですが、 それですと、空白のセルができてしまうこともあり、空白を消すためにフィルタをやらなくてはいけず、なんとか関数でどうにかできないと質問させていただきました(つまり空白のセルは飛ばし、隙間のない1列の表に変換したいです)。 (試したこと) (1)vlookup関数を使うために、日付の横に検索列を作ってもみましたが、同じ行に複数の抜き出すべくものがあると、 if関数のネストをいれるにも「if(c5="","",vlookup(v5,b5:r10,2,fasle)」みたくやってみましたが、c5までは取り出せても、 d5,e5,f5・・・と右にずらしていく関数式が思い当たりません。 (2)種類、数量データ入力されている全てのセルの横に(1.2.3.4.5.6.7.8.9.・・・)と数字をいれて検索列をつくり、vlookupとmatch関数の 組み合わせも試しましたが、vlookup関数の性質上、複数列に検索値(「vlookup(検索値,範囲,列番号,検索の型)」)が存在しているとこれも出来ず。 説明が不十分な点もあると思いますが、よろしくお願いいたします。もし、VBAでなければ難しいとのことでしたら、どのようなVBAを組めばいいかもお願いいたします。

  • セルの結合

    VBAの勉強を始めたばかりの初心者です。 A1、A5 A9・・・・A25までのセルに、それぞれデータが入っていて、データが入っている各セルの下にはデータが入っていない空白の三行を作っています。隣のB列にもデーターはありません。 それをA1からB4、A5からB8・・・A25からB29までのセルを、手作業で結合をしているのですが、今後データが増えていくのでどうしてもVBAで行いたいのです。 ネットで調べてもありそうでなかなかないのでどなたか教えていただければ助かります。 わかりにくい説明ですが宜しくお願いします。   A列  B列 1 ああ  空白 2 空白  空白 3 空白  空白 4 空白  空白 5 ああ  空白 6 空白  空白 7 空白  空白 8 空白  空白 9 ああ  空白 ・ ・

  • A列にB列の空白セル以外のセルの数だけ1から番号をふりたい。

    A列にB列の空白セル以外のセルの数だけ1から番号をふりたい。 WIN7 Excel2007でマクロ作成中です。A列にB列の番号の入っているセル(空白セル以外の)の数だけ番号を入力したいのですが、下記コードで、うまく出来ません。どうしたらよろしいでしょうか。 Sub 行番号を入れる2() Dim i As Integer Dim fCnt As Long 'シートが保護されていたら保護を解除 If ActiveSheet.ProtectContents = True Then ActiveSheet.Unprotect End If fCnt = WorksheetFunction.CountA(Sheets("一覧").Columns(2)) 'COUNTA関数でB列の入力セル数を求める。 For i = 1 To fCnt Worksheets("一覧").Cells(i + 3, 1).Value = i Next i End Sub

  • A列が空白なら、計算式の入っているB.C・・~列も空白で表示する方法。

    A列に対して、B.C・・~列にそれぞれ違った式が入っています。 A列が空白だと、B列#N/A、C列1 ・・・と、それぞれ答えが返ってきます。 今までは、各B、C・・列に「A列が空白の場合は表示しない」設定を「条件付書式」を使ったり「IF(ISERROR・・」の関数を使ったり 無い知恵と知識を振り絞って悪戦苦闘の末、1列1列・・こつこつ設定していたのですが 「もっと簡単な方法があるのでは??」と都合のいいことを考えました。 しかし、恥ずかしながら私には知識が無いもので、そんな事が出来るのか、また仮に出来るとしても方法がわかりません。 関数でも、条件付書式でも、何でもかまいません。 指定したセルが空白の場合、そのセルに対して数式が入っている他の複数セルにも何も表示しないように一発で出来るようにするには、 どうすればいいのか教えて頂けませんか? 98です。出来るだけ簡単な方法がありがたいです。 余談なのかもしれませんが、B列にはVLOOKUPの関数、C列には「A列内の数字+1」と言う式が入っています。 C列はA列に0と入力しても、空白でも1という答えが返ってきてしまいます。そこでA列が空白の場合答えが表示されないようにしたいのです。) 宜しくお願いします。

  • A列に文字列または数字を入力したら隣接するD列に今日の日付が入るようにしたいです

    A列に文字列または数字を入力したら 隣接するD列に今日の日付が入るようにしたいです。 (A1に「あ」と入力したら、 D1に「2007/10/25」が自動的に入力されるようにしたいです) これはIF関数を利用するのでしょうか?? どんどんデータが多くなっていちいち数式をオートフィルするのは面倒だし オートフィルタをかけて「空白のセル」を検索した時に、 IF関数で””のセルも空白セルとして認識されるのが嫌なので 数式以外でこの方法を行うことは出来ないでしょうか? よろしくお願い致します。

  • エクセルでの列と列の比較、重複データ個数抽出

    すいません。どなたか教えてください。 今、エクセル2003を使用しているのですが、ある条件でデータの個数が抽出出来ません。 お知恵をお貸しください。   A列 B列 1 あ   あ 2 い   う 3 う    い 4 え    5 お   か A列とB列を比べると、「あ、い、う」の3つのデータが重複しています。 そこで、一つのセルで3個とい値を返したいです。 条件として、 ・計算用のシートや別セルを使わずに、例えば、C1などの1つのセルの中で関数を使用して個数を出したいです。 ・できたらマクロも使用しないでやりたいです。 ・数字ではなく、文字列の比較で、空白行もあります。 やはり、列同士の比較は一つのセルの中でやることは不可能なのでしょうか? どなたかよろしくお願いいたします。

  • Excel HLOOKUPで一致したセルの列番号

    Excelの関数で、HLOOKUPの関数を使うと セルの値が出てきますが、値ではなくセル番地(列番号)を表示する方法はないでしょうか。 以下のようにシート(SHEET1)を作成しました。  |A  | B | C | D | E | ――――――――――――――――――――― 1|日付 | Bさん   | Aさん   | ――――――――――――――――――――― 2|4/1|   |   |早退 |1.0| 3|4/2|遅刻|1.0|   |   | 4|4/3|   |   |遅刻 |0.5| 他のシートに”Aさん”のそれぞれの集計を 出すように関数(SUMIF)を作成したのですが、 どうしても列番号が必要? 関数またはVBAでなにかよい方法はないでしょうか。

  • エクセルで、列の空欄に隣の列の数値を入れたい

    エクセル初心者です。関数を教えていただきたく質問をいたします。 A列に数値(電話番号)が入ったセルが並んでしますが、7個にひとつくらいの割合で空欄のセルがあります。 しかし隣のB列には、A列で空欄となっているセルの隣に数値(電話番号)がほぼ入っています。 そこで、A列で抜けている数値を、B列から移し、ほぼA列で事を済ませたく考えています。 どなたかご教授いただけないでしょうか。 A列もB列も空欄の行もあります。 オフィスは古く2003です。 どうぞよろしくお願いいたします。

  • LARGE関数で空白セル数だけ飛ばして記入したい。

    LARGE関数で空白セル数だけ飛ばして記入したい。 たとえばA列に連続する数値がランダムに入力されていて、その値の高い値から、LARGE関数で順番をB列に記入しました。しかしA列に空白セルがある場合、空白セル数だけ高い値を飛ばして順番をつけたいのですが、良い方法は御座いませんでしょうか? 例 A列に1から15までランダム記入されていて空白セルが2つあれば13から1、2としていきたいのです。 B1=IF($A$1:$A$15="","",LARGE($A$1:$A$15,A1))↓ と記入すると15、14がエラー表示になって 13から1になってしまいます。それを、13から1、2としていきたいです。 お願いします。

専門家に質問してみよう