- ベストアンサー
Excelフィルタ状態でのコピペ?or他の方法
いつもお世話になっております。 過去質問を検索しましたが解決に至らず、 質問させていただきます。 列Aには、1~10の数字が入っているとします。 列Bには、A~Jの記号が入っているとします。 列Cには、C1数字 C2記号 C3数字 C4記号と 「数字」「記号」を繰り返しながら20行目まで入っています。 これを列Dに対して、 D1 1 D2 A D3 2 D4 B と入れていきたいのです。 数字と記号が交互に入るので、最後は20行になります。 つまりC列で数字と示した横のD列にA列の内容を、 C列で記号と示した横のD列にB列の内容を入れたいのです。 実際は、1~10やA~Jのように、 連続した数字や記号ではありません。 C列を「数字」か「記号」でフィルタをかけた状態でペーストしても、 1~10がD1~D10に入ってしまいます。 (1行飛ばしになってくれません) いい方法をご存知のかたがおられましたら、 なにとぞよろしくお願いいたします。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
何度も何度もすみません、No.3&No.7&No.8です^^; 最後に番外編をお届けします。 これまでは A・Bの2列のデータを交互に表示させるには、 ということを前提にしていました。 では、これをさらに拡張させて 列数が増えても対応可能にするにはどうするか? たとえば、A・B・C 3列のデータを交互に表示させるには? という方法です。 そこまで必要ないっ! ということでしたらここでスルーしてください。 ----- <交互に表示させる列数が3列以上ある場合・・> ◆OFFSET関数の 1番目の引数(基準)は No.7 と同じです。 ↓からがNo.7 とは異なります。 ◆OFFSET関数の 2番目・3番目の引数に使っている ROW関数からデータ開始行の行数を引いてください。 データが3行目から始まっている場合 2番目・3番目どちらのROW関数からも 3を引いてください。 ROW()-3 ← 3を引いてください。( 2つのROW関数両方とも、です) ◆2番目・3番目の引数にある除数は列数にしてください。 つまり列数が 4列なら 2番目の引数は、INT((ROW()-3)/4) ← /4 としてください。 3番目の引数は、MOD(ROW()-3,4) ← 最後を 4にしてください。 たとえば、データが3行目から始まっていて、 交互に表示させる列が A・B・C・D・E と5列ある場合、 F3セルは↓のようになります。 --------------------------------------------- =OFFSET($A$3,INT((ROW()-3)/5),MOD(ROW()-3,5)) --------------------------------------------- ◆ですから、元々のご質問のように たとえ A・B 2列のデータだけの場合でも 融通性を持たせるなら D3セルは↓のようにした方がいいかもしれません。 --------------------------------------------- =OFFSET($A$3,INT((ROW()-3)/2),MOD(ROW()-3,2)) --------------------------------------------- いつもいつも回答し終わってから 自分の回答に、ありゃりゃりゃりゃ~っ! 間違ってるわなコレ、とか 説明不足ですわなコレやと、とか思っています。 反省しきりでございます(-_-;)
その他の回答 (8)
- AloneAgain
- ベストアンサー率71% (285/400)
何度もすみません、No.3&No.7です。 No.7の訂正です。 誤)◆OFFSET関数の3番目の引数(列数)にあるROW関数からは データが奇数行から始まっているなら 1を、 偶数行から始まっているのなら 2を引いて下さい。 ↓ 正)データが奇数行から始まっているなら 1を引いて下さい。 偶数行から始まっている場合は何も引かないでください。 (↑どちらでも結果は同じといえば同じですが・・) たとえば A4から(偶数行から)データが始まっているのなら D4セルは↓のようになります。 ------------------------------------------- =OFFSET($A$4,INT((ROW()-4)/2),MOD(ROW(),2)) ------------------------------------------- ついでに ROW関数の引数が省略できるのは あくまでA列とD列が同じ行から始まっている場合のみです。 A3からデータが始まっていて、D列もD3から表示させる場合のみ、ということです。
- AloneAgain
- ベストアンサー率71% (285/400)
こんにちは、No.3です。 スミマセン、補足見ていませんでした(>_<) はじめに前回の回答の補足↓です。 ◆ROW関数の引数 <( )内のセル番地> は省略してもかまいません。 (A1からデータが始まっている場合、↓でも結果は同じです) ---------------------------------------------- =OFFSET($A$1,INT((ROW()-1)/2),MOD(ROW()-1,2)) ---------------------------------------------- で、補足質問についてですが・・ データが3行目から始まるときは↓のようにしてください。 ------------------------------------------------- =OFFSET($A$3,INT((ROW()-3)/2),MOD(ROW()-1,2)) ------------------------------------------------- つまり・・ どの行からデータが始まっているかによって ↓の3点を確認してください。 ◆OFFSET関数の1番目の引数(基準)は A列の最初のセル番地を絶対参照で指定してください。 A2から始まっているのなら $A$2 A3から始まっているのなら $A$3 としてください。 ◆OFFSET関数の2番目の引数(行数)にあるROW関数から データの開始行の行数を引いて下さい。 データが2行目から始まっているのなら 2を、 3行目から始まっているのなら 3を、 10行目から始まっているのなら 10を引いて下さい。 ◆OFFSET関数の3番目の引数(列数)にあるROW関数からは データが奇数行から始まっているなら 1を、 偶数行から始まっているのなら 2を引いて下さい。 こんな説明で おわかりいただけましたでしょうか?
- matsu_jun
- ベストアンサー率55% (146/265)
#5です。ちなみにこれは、C列に数字と記号が交互でなくてもOKな方法でした。 交互であれば#3様の方法で問題ないと思います。
お礼
ごていねいにありがとうございます♪ 今後の参考にさせていただきます。
- matsu_jun
- ベストアンサー率55% (146/265)
=OFFSET($A$1,NOT(ISNUMBER(C1))*(COUNTA($C$1:C1)-COUNT($C$1:C1)-1)+ISNUMBER(C1)*(COUNT($C$1:C1)-1),NOT(ISNUMBER(C1))) をD1列に貼り付けてみてもらえますか。 ちなみに上式は C列のあるセルが数値かどうかを判断:ISNUMBER(C*) (数字の時1、数字でない時0) C1セルからC列のあるセルまでの 数字の入ったセルの個数:COUNT($C$1:C*) 数字の入っていないセルの個数:COUNTA($C$1:C*)-COUNT($C$1:C*) これを元に、A1セルからオフセットをかけています。
補足
丁寧な説明を入れていただいて、ありがとうございます。 おかげさまで、 ご提示いただいた式については理解できました♪ 私の説明不足で申し訳ありません。 C列は「数字」or「記号」という文字列です。 お手間を取らせてしまい、大変失礼いたしました。
- ryk1234
- ベストアンサー率40% (46/113)
#2です すいません勘違いしました =IF(C1="数値",A1,B1)
お礼
何度もありがとうございます! 今後の参考にさせていただきます♪
- AloneAgain
- ベストアンサー率71% (285/400)
こんにちは。 必ず "数字→記号→数字→記号・・" の順なんでしょうか? YESなら D1セルに↓の数式を入れてください。 ------------------------------------------------- =OFFSET($A$1,INT((ROW(A1)-1)/2),MOD(ROW(A1)-1,2)) ------------------------------------------------- 以下オートフィルでコピーしてください。
お礼
ご回答ありがとうございます。 >必ず~~でしょうか? はい、そうです。 数字記号のパターンの繰り返しです。 ご提示いただいた式を貼り付け&オートフィルいたしましたところ、 うまくいきました(^-^ 複数の関数の組み合わせがまだまだ勉強不足であると痛感いたしました。 今回はコレで乗り切らせていただいて、 落ち着いたらもう一度見直そうと思います☆ ありがとうございました!
補足
1、2列目がタイトル行だった場合などは、 どうすればいいでしょうか? (データが入っているのはA3~A12、B3~B12で、 D3~D22までにまとめたい場合) ただいまヘルプ&ガイドブックと格闘中です! お手すきであれば、ヒントをいただけると嬉しいです。
- ryk1234
- ベストアンサー率40% (46/113)
数値が文字列なんですね。 以下試して頂けませんか。 =IF(ISNUMBER(VALUE(C1)),A1,B1)
補足
たびたびありがとうございます。 ・・・やはり、うまくいかないのですが。 あと、A列は10行、B列も10行あり、 D列はA列とB列の内容を交互に挟むため計20行になるのですが、 ご回答いただいた関数でもいけますか? つたない文章で申し訳ございません。
- ryk1234
- ベストアンサー率40% (46/113)
=IF(ISNUMBER(C1),A1,B1) D1に上記の式ではご希望の形にならないでしょうか?
補足
早速のご回答ありがとうございます。 うまくいきません。。。 ISNUMBERとはこの場合、C1の真偽を問う関数でしょうか? 真ならA1が入り、偽ならB1が入るのでしょうか? 私の質問文がつたなく申し訳ございません。。。 C列には、C1「数字」 C2「記号」 C3「数字」 C4「記号」という 文字列が入っています。 そこでC「数字」の横のD列だけにA列の内容をペーストし、 C「記号」の横のD列だけにB列の内容を入れたいです。 A列は全10行 B列は全10行 C列は全20行 D列は全20行となります。 いかがでしょうか。
お礼
何度もお越しいただいてたのに、 お返事が遅れてごめんなさい(>_<) こんなにご丁寧に教えていただいて、 本当にありがとうございます。 エクセルは全然得意ではないので、 たまにややこしいことを頼まれると、 脳みそがとろけそうになります(-.-;) 大変助かりました☆