• ベストアンサー

文字入力セルにのみに番号を順に付ける

ExcelでD3:D12に文字が入力されたあとボタン押しで同じ行B列のB1:B12に入力された文字のセル分だけ順番に番号を入力したいのですがVBAコードが解る方ご教授宜しくお願いします。 office2013です。

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

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

Private Sub CommandButton1_Click() lr = Range("D10000").End(xlUp).Row n = 1 For i = 2 To lr If Cells(i, "D") = "" Then Else Cells(i, "B") = n n = n + 1 End If Next End Sub >文字入力セルにのみ の「文字」に、力点を置いtないが。 力点をおくなら https://www.google.co.jp/search?source=hp&ei=XvTyWqv_BMuB8wW9-qQI&q=VBA%E3%80%80%E6%96%87%E5%AD%97%E3%81%AB%E9%99%90%E5%AE%9A%E3%80%80%E5%88%A4%E5%88%A5&oq=VBA%E3%80%80%E6%96%87%E5%AD%97%E3%81%AB%E9%99%90%E5%AE%9A%E3%80%80%E5%88%A4%E5%88%A5&gs_l=psy-ab.3...4955.20383.0.21125.29.29.0.0.0.0.730.4023.0j11j1j1j2j1j1.17.0..2..0...1.1j4.64.psy-ab..12.7.2275...0j0i131k1j0i4k1j0i4i37k1j0i23k1j0i4i30i23k1j33i160k1.0.G-mpllF8NZc VBAで文字列かどうかを判定する-VarType関数 などを使ったらどうか。 とりあえず、初歩的なコードでのForNextでやってみた。

その他の回答 (4)

  • HohoPapa
  • ベストアンサー率65% (454/692)
回答No.5

D列には必ず、上詰めでデータを埋める (途中の行に空白行が無い)という条件があるなら よりシンプルに、 B3セルに =IF(D3<>"",row()-2) と埋め、必要数下方向に複写するという解もあると思います。 VBAでということであれば、私なら、 Sub sample()  Dim wkLCnt As Long  With ThisWorkbook.Sheets(1)   wkLCnt = 3   Do    If .Cells(wkLCnt, 4).Value = "" Then Exit Do    .Cells(wkLCnt, 2).Value = wkLCnt - 2    wkLCnt = wkLCnt + 1   Loop  End With End Sub といったコードにします。

kuma0220
質問者

お礼

ありがとうございます。勉強になりました。

  • chie65535
  • ベストアンサー率43% (8526/19383)
回答No.4

D列に飛び飛びに文字列を入力する場合は、B3を以下の式に変更してB4以降にコピーして下さい。 =IF(ISBLANK(D3),"",MAX(B$2:B2)+1)

kuma0220
質問者

お礼

ありがとうございます。

  • chie65535
  • ベストアンサー率43% (8526/19383)
回答No.3

B3セルに =IF(ISBLANK(D3),"",IF(ISNUMBER(B2),B2+1,1)) という式を入力して、B3セルをB4~B12セルにコピーして下さい。 ボタンやVBAでの記述は不要です。 D列に何か入力すると、入力と同時にB列に数字が表示されます。

kuma0220
質問者

お礼

ありがとうございます。

  • f272
  • ベストアンサー率46% (8023/17148)
回答No.1

こんな感じ? Sub aaa() Set r = Range("D3:D21") n = 1 For Each x In r If Not IsEmpty(x) Then x.Offset(, -2) = n n = n + 1 End If Next End Sub そして,ボタンにマクロを割り当ててください。 ボタンを作るのは,[開発] タブの [コントロール] グループの[挿入] からどうぞ。 [開発] タブがない場合の出し方は,検索してください。

kuma0220
質問者

お礼

ありがとうございます。勉強になりました。

関連するQ&A

  • VBA 文字が入力されているセルを表示させたい

    ExcelのVBAで 列番号"A列"に文字を適当に打った時 文字が入っている最終セル(行番号)と その最終セルに入っている文字を "C1"のセルに表示させる というVBAを作成したいのですガ… どなたかわかる方教えて下さい 自分が考えたものはVBAが妙に長くなってしまい; Excelのバージョンが2000と古いので 古いのでも動くVBAだと助かります; 宜しくお願いします

  • セル内文字を切り取りその列の空白セルに貼付け

    B列3行目から添付のようにセル内にカンマを含む文字がありカンマで区切った文字ごとに切り取り矢印右のように同B列の次の空白行に順に貼り付けたく、その際カンマは削除したいのですが行数が多くてできればVBAコードがお分かりなる方宜しくお願いします。 環境はwindows7 office2013です。

  • エクセルのマクロで入力文字を一文字ずつ並んだセルに入れる

    エクセルマクロ超初心者です。 エクセルVBAでユーザーフォームを作成しました。 テキストボックスに入力した文字列を「登録」ボタン押下後、エクセルシートのセルに一文字づつ入るようにするにはどうすれば良いでしょうか? 例えばテキストボックスに「kohiro」と入力するとエクセルのsheet1のA1「k」、B1「o」、C1「h」、D1「i」、E1「r」、F1「o」となるようにしたいのです。入力する文字数は0~30文字までで、その都度長さは変わります。どうやって、文字をばらせばいいのか、またどうやって可変長の文字列を指定したセルに入力すればいいのかわかりません。どうかよろしくお願いいたします。

  • セルに数式を入れずに計算結果のみを入力

    B2:D11まで入力された文字と数値がありB,C列のマッチした文字の計算値をH列にいれたいのですが現在H列はVBAによりセルに数式が入っておりますが計算結果のみをH列に入力したいのですが尚、図では11行までですが行数が多い時を踏まえてVBAコードをご教授願います。

  • マクロを使って文字が入力されたセル数を数える

    マクロを用いて、文字が入力されたセル数をカウントしたいと考えていますがうまくいかず悩んでおります... 具体的には、セルB1からB1000にデータが入力された場合、左隣のA列に1から番号を付したいと考えています. B列が空白のままの行は、A列も空白にしておきたいです. (セルB1からB1000まで全てにデータが入力された場合、A1からA1000には1から1000までの番号が入る) また、A列に付された番号を判断し、100番毎にA列からE列までセル背景を色分けしていきたいと考えています. (B列が空白ならxlNoneでその行は無色のままにしたい) セル背景の色分けだけであればうまくいったのですが、B列の入力状況により自動でA列に番号(数字)を変化させたら思い通りに動かず困っています. ご教示、宜しくお願いします.

  • セルに通し番号を入力したい。

    Excel、ソフトは2002で、マイクロソフトXPです。 セルに01、02、03・・・10、11と通し番号を入力したい。 方法として 1.セルの書式設定で文字列にする。 2.セルに入力する時 ‘ を打ち文字化する。 ことはわかるんですが、ユーザー定義で入力したいと考えてます。 00とか??とかyyにしても01、02の0が入力できません。 どのように定義したらよろしいのでしょうか。教えてください。 よろしくお願いします。

  • 検索の実行で、ヒットした行のA列の番号を、セルB3に自動入力するマクロ

    検索の実行で、ヒットした行のA列の番号を、セルB3に自動入力するマクロを教えてください。 エクセルの6行目から約19000行目まで、A列には1からの番号、B列に薬名、C列に剤形、D列にコードが入力されている薬台帳があるのですが、この台帳から薬名を検索して、最初にヒットしたA列の番号をセルB3に表示したいのです。 どなたかよろしくお願いします。

  • 入力したデータの頭文字によってセルを変えるマクロ

    エクセルに QRコードで入力されたデータを 入力されたデータの規則性によって、入力セルを指定する方法はありますか? 具体的には A1セルと B2セル 両方にスキャンした文字列を入れる必要があり、 2つのQRコードがあります。 QRコードのデータには規則性があって、 片方は AAA00001 もう片方は BAA00002 というように最初の3文字でA列に入力するかB列に入力するか判別して、 どちらのQRコードを先に読んでも適切な列に入るようにしたいと思っています。 こういうことは可能でしょうか? よろしくお願いします。

  • エクセルで入力文字のチェック

    エクセルのセルに入力された値がUnicodeで****から****までの範囲内のみの文字で記述されているかのチェックをしたいのですが、 例:B3には電話番号を入力したいので半角数字と()のみで構成されているかをチェックする。 VBAでどのように記述すればよいのでしょうか? もう一つ、 セルB3に文字を入力し終えた時または、B3にあるカーソルを他のセルに動かした時に VBAが走る…と言う記述方法はあるのでしょうか? ボタンを用意し、入力後[CHECK]を押すとVBAが動くと言うのは出来るのですが… 以上よろしくお願いいたします。

  • 任意の複数のセルから文字を抽出する法

    エクセルの勉強中です。 質問があります。 エクセルには縦の列と横の行があるようですが、 その任意のセルに入った文字列を抽出することは可能でしょうか。 例えばB列に入った5行目、8行目、11行目、14行目といったようにある配列に並んだセル内の文字を別の新規のD列に順番にD1、D2、D3、D4のセルに並べていくという方法などです。 同じファイルでなくても別の任意のファイル内の指定の列に順に入れていくといった作業などです。 同様にC列に入った4行目、8行目、12行目、16行目内のセル内の文字を今度は 新規のE列のE1,E2,E3,E4に順に並べていくなど、上記のような作業を一度に行えればそのような方法があるのか、お知りになる方よろしくお願いします。 その目的の列ごとに行っていく方法でもかまいません。