- 締切済み
該当セルの他の項目のセルを取り出すマクロ
いつもお世話になっております。 初心者なのですが、、、マクロについて教えていただけますでしょうか? エクセルファイルで9000行×NN行の表があります。(列は増えませんが、行は増えます。) ----------------------------------------------------------------------------------------------------------- A列 B列 C列 D列 E列 F列 ----------------------------------------------------------------------------------------------------------- 名前 企画番号 2015/12/1 2015/12/2 2015/12/3 2015/12/4 Aさん P410 7 0 0 6 Bさん P500 0 9 5 3 Cさん P043 0 0 0 0 Aさん P403 4 0 0 0 Cさん P789 0 0 0 0 ----------------------------------------------------------------------------------------------------------- 条件書式で、 =SUMIF($A:$A,$A2,C:C)>10 「同じ人が同じ日付で10以上になったら」赤く塗りつぶすようにしています。 (上の表の場合は、Aさんの2015/12/1の「7」と「4」に赤い塗りつぶし。) ここから、以下のマクロを追加したいと思っています。 赤く塗りつぶしたセルの「名前」「日付」「企画番号」。 (上の表の場合は、「Aさん」「2015/12/1」「P410」「P403」の4セルを取り出したいです。) 取り出す企画番号が2つの場合もあれば、最大6つくらいまでなりそうです。 どうかよろしくお願いいたします。
- zmzmsss
- お礼率80% (16/20)
- Excel(エクセル)
- 回答数1
- ありがとう数3
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Prome_Lin
- ベストアンサー率42% (201/470)
01: Option Explicit 02: Sub Test() 03: Const c As Integer = 6 '「NN」ならここは「378」 04: Dim r, i, j, k, l, p, t(9999) As Integer 05: Dim n(9999), m As String 06: r = Range("A1").End(xlDown).Row 07: l = -1 08: p = 0 09: For i = 2 To r 10: m = Cells(i, 1).Value 11: For j = 0 To l 12: If n(j) = m Then 13: p = 1 14: End If 15: Next j 16: If p = 0 Then 17: l = l + 1 18: n(l) = m 19: End If 20: Next i 21: For i = 3 To c 22: For j = 0 To l 23: t(j) = 0 24: Next j 25: For j = 0 To l 26: For k = 2 To r 27: If n(j) = Cells(k, 1).Value Then 28: t(j) = t(j) + Cells(k, i).Value 29: End If 30: Next k 31: Next j 32: For j = 0 To l 33: If t(j) > 10 Then 34: For k = 2 To r 35: If Cells(k, 1).Value = n(j) Then 36: Cells(1, i).Interior.ColorIndex = 3 37: Cells(k, 1).Interior.ColorIndex = 3 38: Cells(k, 2).Interior.ColorIndex = 3 39: Cells(k, i).Interior.ColorIndex = 3 40: End If 41: Next k 42: End If 43: Next j 44: Next i 45: End Sub 本来は「A列からNN列」までなのですから、「03」行目は「378」になりますが、今は、サンプルで提示されている「A列からF列」までの「6」としています。 従って、ここは実際には、「378」になります。 「06」行目: 「A」列の最終行を取得しています(サンプル例の場合は、「6」になります)。 「07」行目から「20」行目まで: 実際のデータがあるのは、2行目からなので、2行目から最終行(「r」)までに出てくるお名前を調べています。すなわち、「Aさん」「Bさん」というように、「n」配列変数に入れていくのですが、このとき、すでに「Aさん」があれば、読み飛ばします。だからと言って、「Aさん」が何回出てくるかは、調べていません。 これで、名簿が「n」配列変数に入りました。 あとは、「Aさん」について、「Bさん」について、それぞれの、「C」列なら「C」列の合計を出しています。 合計が「10」を超えると、セルを「赤」で塗りつぶします。 それが済むと、「D」列で調べて、次に「E」列で調べて、と繰り返して行きます。 「36」行目から「39」行目で、赤く塗りつぶしているセルの場所(例えば「Cells(1, i)」)の「値」(.Value)を任意の場所に書き出せばいいのですが、ここで、どこにどう書き出せば良いのか、具体的に分からず、プログラムが止まってしまいました。 とにかくあとは、「Cells(1, i).Value」「Cells(k, 1).Value」「Cells(k, 2).Value」「Cells(k, i).Value」を、書き出したい所に、設定するだけです(例えば「Cells(1, 379).Value = Cells(1, i).Value」などです)。 もし、具体的に書き出したい場所のご指示があれば、プログラムを追加訂正します。
関連するQ&A
- 該当のセルの他の項目を取り出すマクロ
いつもお世話になっております。 初心者なのですが、、、マクロについて教えていただけますでしょうか? エクセルファイルで9000行×NN行の表があります。(列は増えませんが、行は増えます。) -------------------------------------------------------------------------------------------------------------------- A列 B列 C列 D列 E列 F列 -------------------------------------------------------------------------------------------------------------------- 名前 企画番号 2015/12/1 2015/12/2 2015/12/3 2015/12/4 Aさん P410 7 0 0 6 Bさん P500 0 9 5 3 Cさん P043 0 0 0 0 Aさん P403 4 0 0 0 Cさん P789 0 0 0 0 -------------------------------------------------------------------------------------------------------------------- 条件書式で、 =SUMIF($A:$A,$A2,C:C)>10 「同じ人が同じ日付で10以上になったら」赤く塗りつぶすようにしています。 (上の表の場合は、Aさんの2015/12/1の「7」と「4」に赤い塗りつぶし。) ここから、以下のマクロを追加したいと思っています。 赤く塗りつぶしたセルの「名前」「日付」「企画番号」を新しいエクセルブックに取り出したい。 (上の表の場合は、「Aさん」「2015/12/1」「P410」「P403」の4セルを取り出したいです。) 取り出す企画番号が2つの場合もあれば、最大6つくらいまでなりそうです。 どうかよろしくお願いいたします。
- 締切済み
- Excel(エクセル)
- Excel2007でのマクロの設定について
Excelのマクロについて質問です。 Excel2007でマクロを設定したいのですが以下の作業はマクロ化出来ますか? 1.特定の文字列を含む行の削除 例:(D11に特定の文字列があった場合、11行を全て削除する) 2.特定の文字列を含む行のうち、一部セルの変更 例:(A列に日付、B列に名前、C列に金額がある場合、B列を検索して該当した名前の列の日付のみ既存の日付の前日にする) また、これは同時に複数の検索が出来ますか? ご回答お待ちしております。
- ベストアンサー
- オフィス系ソフト
- マクロを使って文字が入力されたセル数を数える
マクロを用いて、文字が入力されたセル数をカウントしたいと考えていますがうまくいかず悩んでおります... 具体的には、セルB1からB1000にデータが入力された場合、左隣のA列に1から番号を付したいと考えています. B列が空白のままの行は、A列も空白にしておきたいです. (セルB1からB1000まで全てにデータが入力された場合、A1からA1000には1から1000までの番号が入る) また、A列に付された番号を判断し、100番毎にA列からE列までセル背景を色分けしていきたいと考えています. (B列が空白ならxlNoneでその行は無色のままにしたい) セル背景の色分けだけであればうまくいったのですが、B列の入力状況により自動でA列に番号(数字)を変化させたら思い通りに動かず困っています. ご教示、宜しくお願いします.
- ベストアンサー
- その他(Windows)
- 他のシートのセルの値を引用したい
EXCEL2007でマクロ作成中の初心者です。今困っています。お助けください。 シートのA列に名前が書いてあります。 その名前の横B列に番号を入れたいのです。 A B 1 佐藤 2 伊東 3 加藤 4 以下つづく 横B列の番号は他のシートにあります。現状では以下の番号になります。 A B 1 佐藤 1 2 伊東 3 3 加藤 5 4 以下つづく 他のシートに以下の表があります。これは可変の表で、名前は次の列は空白です。 名前のあるセルのみ上の番号を表示したいです。 、 A B C D E F G →以下つづく 1 2 番号 1 2 3 4 5 6 7 →以下つづく 3 名前 佐藤 伊東 加藤 田中 →以下つづく わかりにくいかもしれませんがよろしくお願いします。
- ベストアンサー
- Visual Basic
- 連日となっているセルを抽出するには?
翌日の日付を抽出する方法があれば、教えていただけますでしょうか。 A列に、数字3ケタが並んでいます。 この数字が同一の行=(A1~C3)のデータの中から C列とB列の日付が翌日になっている行を探し出したいです。 下記の場合は、 C1(13/12/31)とB2(2014/1/1)が連日、翌日となっている。 C2(2014/12/31)とB3(2015/1/1)が連日、翌日となっている。 上記の場合、連日となっている「4つのセル」を全て絞り出したいです。 A B C 1 123 2013/1/1 2013/12/31 2 123 2014/1/1 2014/12/31 3 123 2015/1/1 2015/12/31 ―----------------- 4 456 2013/1/1 2013/12/31 5 456 2013/1/1 2013/12/31 A列の 数字は2700種類程あり、エクセルデータは1万行程度となります。 マクロや関数など、ヒントだけでも知りたいので、 分かる方教えていただけると嬉しいです。
- ベストアンサー
- オフィス系ソフト
- セル内の2行をそれぞれ別のセルにコピーするマクロ
A列にデータが入力されていたとします。 そのデータのうち、複数のセルで改行されて2行になっています。 改行されているセルをサーチし、1行目をB列のセルに、2行目をC列のセルに分割してコピーしたいと思います。 この様な方法は、マクロで可能でしょうか。 適切な関数があれば、ご教授いただきたいと思います。
- ベストアンサー
- オフィス系ソフト
- エクセルマクロでのセルの削除、挿入
A1:G20の表があります、A1:G17にデータが入っています、20行目は合計欄です。 ここでデータ面の任意のセルをアクティブにしアクティプセルとその右のセル2個をマクロで削除し上に詰めます。(B5がアクティブだとB5、C5、D5が削除) 当然合計欄の当該列のセルが上に移動します。その為18行でセル挿入を行い20行目に合計が表示されるマクロの記載を教えてください。よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- マクロで可能ですか。
1ヶ月の売上表があり、下記のように 日付毎の合計を、その日付の最終行に表示するのはマクロなどで可能でしょうか。 関数をセルにコピーしていたのですが、 最終行を探し、31日分コピーするのが不評です。 (下記では簡略化しておりますが、1日分の行数が何十行とあります。) もっと簡単に出来ないのかと言われ、ご教授いただけると幸いです。 Excel2010です。 誰でも使用可能なように、シート名に依存しない仕様だと有難いです。 ご協力宜しくお願い致します。 A列 B列 C列 D列 2014/11/01 商品A \1000 2014/11/01 商品B \1200 \2200 ←11/1の合計 2014/11/02 商品A \1000 \1000 ←11/2の合計 2014/11/03 商品C \1500 2014/11/03 商品B \1200 \2700 ←11/3の合計 : : 2014/11/30 商品A \1000 2014/11/30 商品A \1000 \2000 ←11/30の合計
- ベストアンサー
- Excel(エクセル)
- セル移動マクロを教えて下さい。
エクセルで最終行の次の行(新規入力となる行)の左4つ目のセルに移動するマクロを作りたいのですが、出来るでしょうか。 例えば列Aに1から3000までのNOが入っているとします。 B列からD列までは他のデータに使用しているため新規入力データE列の行から右に入力しています。 NO125の行までデータ入力している場合、ボタンをクリックすれば、A列のNO126(新規入力行のA列)にセルが移動するマクロです。 よろしく、お願いいたします。
- ベストアンサー
- オフィス系ソフト
- Excelで表のある日以前の値を合計する sumif?
こんにちは。 ExcelでA列の1行目に2010/1/1から31行目に2010/1/31まで、日付が並んでいます。 B列の1行目に1から31行目に31まで、1ずつ増える数字が並んでいます。 セルC1に2010/1/10と入力した場合に、セルD1に55と返すような数式を書きたいと思っています。 要するに、セルC1から以前の日をA列で見つけて、同じ行のB列の値を合計したいのです。 sumifを使ってみましたが、うまくいきません。 ご指導、お願いいたします。
- ベストアンサー
- その他MS Office製品
お礼
ありがとうございました。