[[20150323084627]] 『チェックした行のデーターを別シートに表示したい』(いつき) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『チェックした行のデーターを別シートに表示したい。』(いつき)

管理表を作りたいと思いますが、マクロがわかりません。

シートAA

   A    B    C   D   E   F
1  ☑  3/1  ○       △   
2  □  3/4  ○       △
3  ☑  3/10     ×   △
4  ☑  3/12 ○       △
5  □  3/15     ×   △


シートBB

   A     B   C   D   E   F
1 3/1  ○   △   
2 3/10 ×   △
3 3/12 ○   △

こんな感じで表示したいです。

どのようにすればいいのでしょうか?

< 使用 Excel:Excel2007、使用 OS:Windows7 >


チェックマークは、どうやって実現していますか?
あと、AAシートとBBシートは列が違うようですが、その規則は?
(E列→C列になって、D列以降は無し? あとから実はG列以降にもデータが…、とか言われても困ります)

普通は、A列は1,0とか入力しやすいものにして、オートフィルタで絞ってからコピペするだけです。
D列は要らないというなら、BBシートで非表示にするだけでも十分だろうし。
(???) 2015/03/23(月) 10:04


ちなみに、チェックマークのお薦めは、A列のセルの書式設定を、「"☑";;"□"」にすることです。
これなら0か1で入力できるし、フィルタでも絞れます。
(???) 2015/03/23(月) 10:13

素人で説明不足ですいません。

チェックマークはフォームのチェックボックスで作成しようと思います。
あと、シートで列が違うのは必要とする列だけ表示し表を作成したいと考えています。
(D列以降は無しの予定です。)

(いつき) 2015/03/23(月) 11:49


フォームのチェックボックス利用は、いちばん困難な方法ですね。

何故かというと、コントロールを置く順番は決まっていないので、途中に挿入できたりします。
また、コピー作成した順番で、コントロール名が自動的に通番になりますが、行とコントロールの番号に何の関連も無いのですよ。(好きな座標に置けてしまう)

全てのコントロールの座標を調べて、それをセルの座標と比べていけば、何行目のコントロールか判断できますが、結構面倒。
チェックを付けるルール自体を変更できませんか? セルに印があるなら、オートフィルタを使うだけなのですよ。
(???) 2015/03/23(月) 14:37


または、チェックボックスの書式設定で、全てリンク先にセルを指定してあるのであれば、リンク先を調べる事ができます。
でも、いちいちリンク設定するのは面倒なので、普通はチェックボックスを置くだけで、リンクしてないですよね?
(???) 2015/03/23(月) 14:42

[[20150113162708]]
 ichinoseさんがApplication.Callerでうまいことやってたの思い出したので、紹介だけ・・・
(稲葉) 2015/03/23(月) 14:52

素人なものでチェックボックスしか思いつきませんでした。
なので、チェックボックスにはこだわりありません、ただ、選択した行の必要セルだけ別シートに表として表示しそれを印刷したいのです。

選択する行は最大4行までと考えています。

他に良い方法は無いですか?
(いつき) 2015/03/23(月) 14:58


とりあえずAAシートのA列は0,1で表現したとして、マクロで転記する例。
印刷は、最初書いていなかったくらいだし、手動で十分と判断。
(しかし、わずか4行3列なデータが、印刷するほどのものなのだろうか?)

 Sub test()
    Dim ws As Worksheet
    Dim i As Long
    Dim iR As Long

    Set ws = Sheets("BB")

    For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
        If Cells(i, "A").Value = 1 Then
            iR = iR + 1
            ws.Cells(iR, "A").Value = Cells(i, "B").Value
            ws.Cells(iR, "B").Value = Cells(i, "C").Value
            ws.Cells(iR, "C").Value = Cells(i, "E").Value
        End If
    Next i
 End Sub
(???) 2015/03/23(月) 16:01

ありがとうございます。
やってみましたが、選択したDの列が表示されません。
どこを直せばよいのでしょうか?
(いつき) 2015/03/23(月) 16:44

あれ、てっきりD列は転記不要と思ったのですが、使うのですね。

つまり、C列またはD列どちらかに文字列が入力されている、ということで良いですか?
両方に入力されているなら、また違ったコードになるのですが。

            ws.Cells(iR, "B").Value = Cells(i, "C").Value & Cells(i, "D").Value
(???) 2015/03/23(月) 17:02

ありがとうございます。
出来ました。

自分なりにもっと勉強していきます。

(いつき) 2015/03/23(月) 17:11


シートBBの初めに表示するのを表示するいちを変更するにはどうすればいいですか?
(いつき) 2015/04/13(月) 17:07

iRは初期値設定していないので、0から始まります。iR+1の行に出力するので、1行目からになります。
なので、最初(Forループより前)に、iRの値を幾つか代入しておけばずらせますね。
(???) 2015/04/13(月) 17:17

すいません。素人でどこにどのように記入すればいいのかわかりません。
例えば3/Cから始めようとするとどうすればいいですか?
(いつき) 2015/04/13(月) 17:38

すいません。素人でどこにどのように記入すればいいのかわかりません。

例えば3/Cから始めようとするとどうすればいいですか?
(いつき) 2015/04/13(月) 19:51


 列はコードにあからさまに書かれているのでわかると思いますが、
 書き込み先の行(iR) は
 >なので、最初(Forループより前)に、iRの値を幾つか代入しておけばずらせますね。
 とコメントされている通り、3行からにしたかったら、現在1行なのですから、
 For の前で
 iR = 2
 としたらできないでしょうか。

(Mook) 2015/04/13(月) 20:08


行と列を変えるだけでも自分で試そうとしないようでしたら、マクロなんてこの世に無いものと思って、全部手動で行うべきですよ。
素人だから判らない、なんて、逃げです。 "A"を"C"に書き換えるなんて、キーボード打てる人なら誰だってできるレベル。

 Sub test()
    Dim ws As Worksheet
    Dim i As Long
    Dim iR As Long

    Set ws = Sheets("BB")
    iR = 2

    For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
        If Cells(i, "A").Value = 1 Then
            iR = iR + 1
            ws.Cells(iR, "C").Value = Cells(i, "B").Value
            ws.Cells(iR, "D").Value = Cells(i, "C").Value & Cells(i, "D").Value
            ws.Cells(iR, "E").Value = Cells(i, "E").Value
        End If
    Next i
 End Sub
(???) 2015/04/14(火) 08:48

すいません。コメントがおそくなりました。

昨日のMookさんのコメントと後出来ました。ありがとうございます。
(いつき) 2015/04/14(火) 17:46


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.