• ベストアンサー

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行飛ばしになってくれません) いい方法をご存知のかたがおられましたら、 なにとぞよろしくお願いいたします。

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

  • ベストアンサー
回答No.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)) --------------------------------------------- いつもいつも回答し終わってから 自分の回答に、ありゃりゃりゃりゃ~っ! 間違ってるわなコレ、とか 説明不足ですわなコレやと、とか思っています。 反省しきりでございます(-_-;)

gagambo
質問者

お礼

何度もお越しいただいてたのに、 お返事が遅れてごめんなさい(>_<) こんなにご丁寧に教えていただいて、 本当にありがとうございます。 エクセルは全然得意ではないので、 たまにややこしいことを頼まれると、 脳みそがとろけそうになります(-.-;) 大変助かりました☆

その他の回答 (8)

回答No.8

何度もすみません、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から表示させる場合のみ、ということです。

回答No.7

こんにちは、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)
回答No.6

#5です。ちなみにこれは、C列に数字と記号が交互でなくてもOKな方法でした。 交互であれば#3様の方法で問題ないと思います。

gagambo
質問者

お礼

ごていねいにありがとうございます♪ 今後の参考にさせていただきます。

  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.5

=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セルからオフセットをかけています。

gagambo
質問者

補足

丁寧な説明を入れていただいて、ありがとうございます。 おかげさまで、 ご提示いただいた式については理解できました♪ 私の説明不足で申し訳ありません。 C列は「数字」or「記号」という文字列です。 お手間を取らせてしまい、大変失礼いたしました。

  • ryk1234
  • ベストアンサー率40% (46/113)
回答No.4

#2です すいません勘違いしました =IF(C1="数値",A1,B1)

gagambo
質問者

お礼

何度もありがとうございます! 今後の参考にさせていただきます♪

回答No.3

こんにちは。 必ず "数字→記号→数字→記号・・" の順なんでしょうか? YESなら D1セルに↓の数式を入れてください。 ------------------------------------------------- =OFFSET($A$1,INT((ROW(A1)-1)/2),MOD(ROW(A1)-1,2)) ------------------------------------------------- 以下オートフィルでコピーしてください。

gagambo
質問者

お礼

ご回答ありがとうございます。 >必ず~~でしょうか? はい、そうです。 数字記号のパターンの繰り返しです。 ご提示いただいた式を貼り付け&オートフィルいたしましたところ、 うまくいきました(^-^ 複数の関数の組み合わせがまだまだ勉強不足であると痛感いたしました。 今回はコレで乗り切らせていただいて、 落ち着いたらもう一度見直そうと思います☆ ありがとうございました!

gagambo
質問者

補足

1、2列目がタイトル行だった場合などは、 どうすればいいでしょうか? (データが入っているのはA3~A12、B3~B12で、  D3~D22までにまとめたい場合) ただいまヘルプ&ガイドブックと格闘中です! お手すきであれば、ヒントをいただけると嬉しいです。

  • ryk1234
  • ベストアンサー率40% (46/113)
回答No.2

数値が文字列なんですね。 以下試して頂けませんか。 =IF(ISNUMBER(VALUE(C1)),A1,B1)

gagambo
質問者

補足

たびたびありがとうございます。 ・・・やはり、うまくいかないのですが。 あと、A列は10行、B列も10行あり、 D列はA列とB列の内容を交互に挟むため計20行になるのですが、 ご回答いただいた関数でもいけますか? つたない文章で申し訳ございません。

  • ryk1234
  • ベストアンサー率40% (46/113)
回答No.1

=IF(ISNUMBER(C1),A1,B1) D1に上記の式ではご希望の形にならないでしょうか?

gagambo
質問者

補足

早速のご回答ありがとうございます。 うまくいきません。。。 ISNUMBERとはこの場合、C1の真偽を問う関数でしょうか? 真ならA1が入り、偽ならB1が入るのでしょうか? 私の質問文がつたなく申し訳ございません。。。 C列には、C1「数字」 C2「記号」 C3「数字」 C4「記号」という 文字列が入っています。 そこでC「数字」の横のD列だけにA列の内容をペーストし、 C「記号」の横のD列だけにB列の内容を入れたいです。 A列は全10行 B列は全10行 C列は全20行 D列は全20行となります。 いかがでしょうか。

関連するQ&A

  • エクセルで離れたセルを離れた場所へコピペするには?

    エクセルで 1行目のctrl+コピーで離れたセル(B1,D1,F1)を 3行目(B3,D3,F3)、4行目(B4,D4,F4)、6行目(B6,D6,F6)などに 貼り付けるにはどうすればよいでしょうか? ちなみに、A列、C列、E列には他の数値があるのでコピーしたくないのです。 どなたかよろしくお願いします。

  • Excel マクロで連番作成方法を教えてください。

    OS:Windwos2000 Excel2000 以下の内容をマクロで実施する方法を教えてください。 過去の質問を確認しましたが、 私の希望する内容とは分部とはことなるため、 質問させていただきました。 A列に入力されているデータの最終行まで 各B列、C列、D列にオートフィル機能を使って数式コピーを行いたい。 ※A列のデータ数は固定ではなく増減します。 ※B列、C列、D列の先頭行には数式を入力済みです。 ※オートフィル機能でなくても問題ありません。 よろしくお願いいします。 A列     B列      C列     D列      E列 データ   =LEFT(A1,4)  -   =MID(A1,8,14)  =B1&C1&D1 データ   =LEFT(A2,4)  -   =MID(A2,8,14)  =B2&C2&D2 データ   =LEFT(A3,4)  -   =MID(A3,8,14)  =B3&C3&D3 データ   =LEFT(A4,4)  -   =MID(A4,8,14)  =B4&C4&D4 データ   =LEFT(A5,4)  -   =MID(A5,8,14)  =B5&C5&D5 ・

  • Excel関数について(初級者)

    例えば以下の表データがあり、    A   B  1 数字  記号 ←タイトル行 2  1   a 3  2   b 4  3   c A行のある数字を入力するとB行の同じ列の記号を表示させるのは(入力欄をC2、結果表示セルをD2として) D2に VLOOKUP(C2,A2:B4,2) でうまくいきました。つまり2を入力するとbという答えです。 でも逆にB行のある文字を入力するとA行の同じ列の数字を表示させるのに(入力欄をC3、結果表示セルをD3として) D3に VLOOKUP(C3,A2:B4,1) つまりcと入力すると3の答え でやってみたが#N/Aのエラーがでてうまくいきません。 間違った点のアドバイスをお願いします。

  • EXCELで予測値を導き出す方法(複合バージョン)

    複雑になってしまいますが、みなさま、よろしくお願いします。 A列1~9行 50 70 30 60 10 90 50 60 20 A列10行 75もしくは76 以上のような数値とします。 (列はアルファベット、行は数字) B10 [式] =AVERAGE(A1:A10) C10 [式] =STDEVP(A1:A10) D10 =B10+C10 と式を入れ、 A列10行に「75」を入れますと、D10に表示される数字は75.38です。 A列10行に「76」を入れますと、D10に表示される数字は75.58です。 つまり、76で、はじめてD10の数字を超えます。 現在のやり方ですと、少しずつ数字を増減させて数字を導き出しているのですが、 このはじめて超える数字、この場合だと76を一発で出す関数式はどのようにすればいいのでしょうか? ○参考までに 昨日、同じような質問をしました。 http://oshiete1.goo.ne.jp/qa3270906.html 前回は、A列10行が空欄で数値が出るのですが、 今回は、A列10行に仮想的に数値を入れ、B10を出しておかないとD10が導き出せないことに気づきました。 B11 =ROUNDUP(AVERAGE(A1:A9),0) C11 =ROUNDUP(STDEVP(A1:A9),0) D11 =B11+C11 という感じに作ってみたのですが、B11の時点で49(B10では51.6)となり、最終のD列が一致しませんでした。

  • Excel2013-フィルターをかけた状態でコピペ

    フィルターをかけた可視セル上でのみ作業したいとき、コピー&ペーストの方法はありますか? エクセルでフィルターをかけて、1行目・5行目・10行目が見えています。 A列の上から3行をドラックしてコピーすると可視セル(A1・A5・A10)のみ選択されますが、それをB列1行目に貼り付けると、可視セル上の2行目・3行目(実際の5行目・10行目)から消えてしまいます。 フィルターを外すとB2・B3がA5・A10の内容に上書きされています。 可視セル上でのドラッグ+コピーは出来るので、 可視セル上でそれを”ペースト”出来ると便利なのですが、方法はありますか?

  • エクセル、任意の「行」だけを抽出したい。

    こんなことできますか? A1:F100のセル内にランダムに数字が入っています。 質問1) この中から 1行目→3行目→5行目と一つ飛ばしで入っているデータを抽出してH1:M100の範囲内に表示させるにはどのような操作をすればいいのでしょうか?関数とかで簡単に抽出表示させる技とかあればいいのですが・・・。 A1-B1-C1-D1-E1-F1 A2-B2-C2-D2-E2-F2 A3-B3-C3-D3-E3-F3 A4-B4-C4-D4-E4-F4 A5-B5-C5-D5-E5-F5 A6-B6-C6-D6-E6-F6 A7-B7-C7-D7-E7-F7 ・・・ A100-B100-C100-D100-E100-F100 の中から A1-B1-C1-D1-E1-F1 A3-B3-C3-D3-E3-F3 A5-B5-C5-D5-E5-F5 ・・・ を抽出して H1-I1-J1-K1-L1-M1 ・・・ H100-I100-J100-K100-L100-M100 の範囲内に表示させたいです。 質問2) 同様に、 1行目→4行目→7行目と二つ飛ばしで入っているデータを抽出してO1:T100の範囲内に表示させるにはどのような操作をすればいいのでしょうか?関数とかで簡単に抽出表示させる技とかあればいいのですが・・・。 ※ 説明がわかりにくいかもしれませんが、よろしくお願いします。

  • 複数セルから特定の文字を検索して、その対象セルを抽出したい

    エクセルで関数、VBAを使用して、下記のようなDATA抽出を行ないたいのですが、どなたか、ご指導いただけないでしょうか。 たとえば、2種のシートが、各々、 <シート1>   列A   列B 行1 A1 ABCD-123 行2 B23 EFGH-456 行3 C456 あいうえお <シート2> 列A 列B 列C  列D  列E 行1 A1 A2 A3 行2 B23 C5 A4 行3 A5 B2 C456 ・・・・・・・となっている場合、 <シート2> の列D  行1 へ "A1"と入力(記載)がある場合、列Eに   ”ABCD-123”と表示(抽出)を行ないたい。 セルには、文字、数字、記号が入ります。 よろしくお願い致します。

  • エクセルのフィルターオプションで

    エクセル2000です。 A10:D10000位の大きな表があります。1行目(10行)はタイトル行です。 そのうちB列の商品名からA、B,Cの3つの商品、D列の日付から2006/12/01~2006/12/31のものをフィルターオプションで抽出したいのです。 抽出条件を 1行目はタイトル行 B2にA B3にB B4にC とした場合、D2~D4にはどう記述すればいいのでしょうか?

  • ある条件下でIF関数により取り出した数値を計算する方法

    エクセル関数です。2つの数字の変化が A列  B列 100    1 103    1 109    1 120    1 105    -1 102    -1 120    1 123    -1 ・    ・ の時に,以下の2つの条件を満たす式を作る。(1)B列の数字を3行ずつ見てゆく。3行目までずっと1が続き,数字が変わらなければ(-1が出なければ)3行目のA列の数値(109)を取り出す。(2)数字を取り出してから次の3行目までの間でB列の数字が変わったとき(1→-1,-1→1)には,変わった行のA列の数値(105)を取り出す。次はB7なので120,次はB8なので123…と数字を取り出す度にリセットして,新たに3行の中から新しい数字を取り出す。 (頂いた回答) 3列使います。C4=IF((B3=B2)*(B4=B3)*(SUM(C$2:C3)=0)=1,1,0)。D4=IF(B4<>B3,1,0) E4=A4*(C4+D4)。 リセットする毎に,リセットした時点のA列の数字から取り出したA列の数字を引き算したいのですが,良い関数が思いつきません。

  • Excelについての質問です。

    エクセルについての質問なのですが、 A列の数値だけをB列から選び出して、そこから更に選び出したBと同じ行にあるCをDに代入したいのですが、どのようにすればよいでしょうか?    A   B   C   D 1  0.1  0.1  5 2  0.5  0.3  10 3  1.2  0.4  20 4  2.3  0.5  40 5  3.7  0.7  80 6  4.7  1.0  160 7  5.9  1.2  320 わかりにくい表ですが、この場合 A1の「0.1」、B列で「0.1」といえばB1になります。それをBと同じ行のC1の数値「5」をD1に代入。 A2の「0.5」、B列で「0.5」といえばB4になります。それをBと同じ行のC4の数値「40」をD2に代入。 A3の「1.2」、B列で「1.2」といえばB7になります。それをBと同じ行のC7の数値「320」をD3に代入。    D 1  5 2  40 3  320 4  ・ 5  ・ 6  ・ という結果にしたいのですが・・・。 これは可能なのでしょうか? わかりづらい質問ですが、宜しくお願いします。

専門家に質問してみよう