• ベストアンサー

A列に1~10000までの値が入力されています。

A列に1~10000までの値が入力されています。 下記の条件で、B列に印を付けたいです。 条件(1) A列には、途中ランダムに空白のセルがあります。 条件(2) B列に、5連続以上入力があった場合のみ●の印を付けたい。 マクロで、可能でしょうか? イメージは、画像のような感じです。

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

マクロ(VBA)例です。 対象データシートタブ上で右クリック→コードの表示→サンプルコード貼り付け→シート上でAlt+F8キー押下→sample実行 Sub sample() Dim i As Long, j As Long, cnt As Long For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row + 1 Select Case Cells(i, 1) Case "" If cnt >= 5 Then Cells(j, 2).Resize(cnt) = "●" cnt = 0 Case Else If cnt = 0 Then cnt = 1: j = i Else cnt = cnt + 1 End If End Select Next End Sub

tta0852lkjpl
質問者

お礼

うぉぉぉ。 完璧です!!!!感謝感謝ですよ。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

マクロというよりも関数で十分対応できますね。 データがA2セルから下方にあるとします。 B2セルには次の式を入力して下方にドラッグコピーします。 =IF(A2="","",IF(COUNT(A2:A6)=5,"●",IF(AND(A2<>"",B1="●"),"●","")))

tta0852lkjpl
質問者

お礼

関数でも、狙い通りの結果になりました。

全文を見る
すると、全ての回答が全文表示されます。
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

こんばんは、参考に Sub Test()   Dim c As Range   For Each c In Range("A:A").SpecialCells(xlCellTypeConstants).Areas     If c.Cells.Count >= 5 Then c.Offset(, 1).Value = "●"   Next End Sub

tta0852lkjpl
質問者

お礼

おおお。 マクロと言っても、色々と方法があるんですね。 勉強になります。

全文を見る
すると、全ての回答が全文表示されます。
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

マクロではなく関数ですが B1に =IF(COUNT(A1:A5)=5,"●","") B2に =IF(COUNT(A2:A6)=5,"●",IF((A2<>"")*(B1="●"),"●","")) と、入れてB2を下方向にコピーしてください。

tta0852lkjpl
質問者

お礼

迅速に回答して頂き、ありがとうございます。 関数で出来ました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • EXCELで範囲内にある値を検索してA列の値を返す

    タイトル通りなのですが、OSはXPでEXCEL2000を使用しています。 シート内ですが 1.A列には文字列が入っています。200行まで空白は無いです。 1.B列からL列の200行までに数字がランダムに入っています。 2.数字は1~500までです。 3.行によってはL列まですべてのセルに値が入ってません。  数字の入っていないセルは空白です。 4.数字の重複はありません。 やりたいことは 別のシートのA列に1~500までの数字を入れ、B列に上記範囲の中からその数字を検索して、その行のA列の値を返したいのですが、出来ません。 どの関数を組み合わせれば出来るのでしょうか? vlookupの検索範囲は1列だけなのでダメでした。 よろしくお願いします。

  • セルA列とB列に社員a~社員jと連続的に入力されています。

    セルA列とB列に社員a~社員jと連続的に入力されています。 それを横のセルにマクロなどで一括で図のように順列させることは可能でしょうか? よろしくお願い致します。

  • 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としていきたいです。 お願いします。

  • B列のセルにある文字が出た時A列のセルの値を変える

    B列のセルにある文字が出てきたときA列のセルの値を変える式、マクロを教えて下さい  A列のセルの値のリストは最初から決まっていてB列のセルに出てくるある文字と同じ数あります。

  • 困っています。教えて下さい。

    A列に値が入力されていて、間に空白のセルがランダムに存在しています。 それを、C列のように抽出したいです。 条件は下記の通りに。 (1)空白のセルに、挟まれたセルを抽出する。 (2)空白のセルに、挟まれたセルで0だけの場合は除外する。 (3)空白のセルに、挟まれたセルで0と他の数値の混合の場合は抽出する。 (4)最終的に、上記の条件で抽出した値の平均値を算出したい。 IF関数を使うのか、マクロを組まなくてはならないのか分からなくなってしまいました。

  • これからA列に「○」を入力したら、隣接するB列に「○」が入るようにしたい

    A列、B列があります。 各列ともランダム「○」が入っています。 今の状態としては A列のみ○ B列のみ○ 両方なし 両方あり この状態から これからはA列に「○」を入力したら、 隣接するB列に「○」が入るようにしたいです。 私が思いついた方法は B1列に「=$A1」を入力して下までドラックしたんですが ・一番下に新たに行を追加した時、またドッラクしなきゃいけない。 ・A列が空白の時のB列が「0」になってしまうし、B列に入力されている「○」も「0」になってしまう。 が回避出来ません。 どなたかお知恵をおかしください。 よろしくお願い致します。

  • VBA2010,B3の値が変わったら、A3に

    VBA2010で,B列の値が変わったら、A列の同じ行に前日の日付を入力するには、マクロコードをどのように書けばよいですか?B列データ入力範囲はB3~B65536 尚、B3~B65536にはVLOOKUPで、他のブックから値を参照しています。 最後にA列の同じ日付セルを結合し、I列、P列、W列の同じ行に結合したセルをペーストたいのです。 宜しくお願い致します。

  • 【Excel】2つの値のどちらかを抽出する

    A、Bのセルがあり、どちらのセルにも文字列が入っていたり、入っていなかったりとします。 そこでセルCに、A、Bどちらかの文字列を入れたいと考えたとき、どのような関数が考えられますでしょうか? 条件は以下のようにします。 (1)A,Bとも文字列か、空白のどちらか (2)Aの方が優先される。A,Bのどちらも値が入っている場合はA、Aが空白で、Bに値が入っている場合はBの値がCに反映される。 宜しくお願い致します。

  • エクセルのマクロ(指定列の空白にひとつ上の文字を入力し続ける)

    エクセルのマクロを教えてください。 指定列の空白にひとつ上の文字を入力し続けるマクロです。 A列指定 A2からスタートし、1000行くらいあるデータ 空白があった場合ひとつ上の文字を入力 空白は、2行連続・3行連続となることもあるが大抵は1行空白 この場合、空白セルの上で一番近いデータをコピーする A列のデータは、文字・数字・日付と様々 1000行ある場合もあるが、それ以下の場合もあるので、10行空白が続いたらマクロが自動的に終了 エクセル2003使用 よろしくお願いいたします。

  • Excel 隣接しない列に値貼り付け

    Excel 隣接しない列に値貼り付け ※「Excel 隣接しない列に一発で値貼り付け」の書き直しです。 ある一定の書式にしたがって作成された20~30のシートのデータを1つのシートに集約しており(集約シートを含み全てのシートは同じデータ内です。)、データを集約した集約シートの「表A」は下記の添付画像左側のようになります。 やりたいことは、「表A」のB列、C列、D列、E列をある条件のもとに右側の「表B」のH列、J列、L列、N列に値の貼り付けを行いたいのです。 現在の作業工程は、C列の空白行は必要ないため(C列が空白=他の列も空白)C列に文字入力があるとチェックが入るA列のオートフィルターで、「○」のみ表示にし、B~E列を順にそれぞれ、2行目からデータが記載された最終行までコピーし 「表B」のそれぞれの箇所に値貼り付けを行っています。 この時の注意点として、A列のオートフィルタ利用のためC列には空白がありませんが、B、D、E列には空白が存在します。 データがある最終行以下の空白は必要ありませんが、データ間の空白には意味があります。(下記の図で示すと「B3、4」や「D3、4」) 現在の作業工程でも問題はないのですが、この作業は最初に記載した20~30のシートに記載されたデータの校正に使うため取りこぼしをしたくなく、不特定多数の方が簡単に使えるようにしたいので、どうにか作業工程を減らしたいと考えています。 よろしくお願いします。 ▼書式シート *シートの数は増減する。 *集約シートが参照するセルには、必ずデータが入力されているわけではない。 *入力データは全て数値ではなく文字である。 ▼集約シート *他のブックと共通使用なため、一部の式は他のブックへのコピーに対応する形である。 *空白セルを参照している場合に結果として返される「0」は、オプション設定で非表示にて対応 *「表A」の行長は増減する。 *貼り付け先「表B」の列は飛び飛びである。 ▼ちなみに「表A」に使われている計算式(実際とは一部変えています) ■A列  :C列に文字入力がある場合「○」が表示されます     {=IF(OR($C1>""),"○","")} ■B-E列:他のシートの任意のセルの値をコピー     {=IF(ISERROR(INDIRECT("'シート名'!セル")),"",INDIRECT("'シート名'!セル"))} PC環境:Win XP / Excel 2003

専門家に質問してみよう