• 締切済み

Excelで条件に満たしたセルを飛ばす

色々と前の投稿を見ましたが、どうしても答えが分からず質問させてもらいます!! 1から31(1ヶ月)のセルの中で、毎月ランダムにたくさんのアルファベットが入ります。 その中で、「a」というアルファベットのみを別シートに飛ばし、その別シート上では「1」として表記したいです。さらに、その「a」が入った日付も一緒に別シートに飛ばしたいです。 一ヶ月の中で「a」が入るのは2~5回ぐらいなので、別シートには7日分の表を用意するつもりです。 ただ、その1ヶ月の中でどこに「a」が入るかは決まっていません。 日付も全く未定なので、「a」が入ったら別シートに1として、さらに日付が入ったセルの数字も一緒に飛ばす。 マクロは全く分からないので、出来れば関数が良いです!!

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんばんは! >マクロは全く分からないので、出来れば関数が良いです!! というコトですので、一例です。 ↓の画像のような配置になっているとします。 Sheet2のA2セルに =IFERROR(INDEX(Sheet1!A$1:A$50,SMALL(IF(Sheet1!B$1:B$50="a",ROW(A$1:A$50)),ROW(A1))),"") これは配列数式になりますので、Ctrl+Shift+Enterで確定! この画面からコピー&ペーストする場合は 上記数式をドラッグ&コピー → A2セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま) Ctrl+Shiftキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 B2セル(配列数式ではありません)には =IF(A2="","",1) という数式を入れ A2・B2セルを範囲指定 → B2セルのフィルハンドルで下へコピー! これで画像のような感じになります。 ※ お望みの方法でないVBAでもやってみました。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト Sub Sample1() 'この行から Dim lastRow1 As Long, lastRow2 As Long, wS As Worksheet Set wS = Worksheets("Sheet2") With Worksheets("Sheet1") lastRow1 = .Cells(Rows.Count, "A").End(xlUp).Row lastRow2 = wS.Cells(Rows.Count, "A").End(xlUp).Row Application.ScreenUpdating = False If lastRow2 > 1 Then Range(wS.Cells(2, "A"), wS.Cells(lastRow2, "B")).ClearContents End If .Range("A1").AutoFilter field:=2, Criteria1:="a" If Cells(Rows.Count, "A").End(xlUp).Row > 1 Then Range(.Cells(2, "A"), .Cells(lastRow1, "A")).SpecialCells(xlCellTypeVisible).Copy wS.Range("A2") lastRow2 = wS.Cells(Rows.Count, "A").End(xlUp).Row If lastRow2 > 1 Then Range(wS.Cells(2, "B"), wS.Cells(lastRow2, "B")) = 1 End If End If .AutoFilterMode = False Application.ScreenUpdating = True End With End Sub 'この行まで 次に画面左下にある「Sheet1」のSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻りSheet1のB列にデータを入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Dim lastRow1 As Long, lastRow2 As Long, wS As Worksheet Set wS = Worksheets("Sheet2") If Intersect(Target, Range("B:B")) Is Nothing Then Exit Sub Call Sample1 End Sub 'この行まで これでも同じ結果になると思います。 ※ VBAの場合はB列の数式が消えてしまいます。m(_ _)m

回答No.4

D4 1 E4 =if(countif(sheet1!B$4:B$34,"a")<d4,"",index(sheet1!a:a,small(index(row(sheet1!B$4:B$34)+999*(sheet1!B$4:B$34<>"a"),),d4))) F4 =if(e4="","",1) 自動的に転記するためには、上のように、難しい数式が必要です。それよりも、単にオートフィルタで絞り込むだけにとどめるのが通常の手法です。自動にする必要性があまりないケースが多いので。別シートに保存したければ、絞り込んだ状態でコピペしてください。 なおセルに数式をセットするだけではこのように難しいのですが、マクロなら初級レベルでもできる課題です。

0129yuuki
質問者

お礼

回答ありがとうございます!! すごい詳しく実際に作ってもらえてありがたいです! やっぱり数式だとすごい複雑ですね~。 マクロをこれから覚えていこうと思います。 ありがとうございました!

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

元データのレイアウトがわからないのですが、Sheet1のA2セル以下に日付、B2セル以下に「a」という文字が入力されているなら、別シートのB2セルに以下の式を入力し下方向にオートフィルします。 =IF(COUNTIF(Sheet1!$B$2:$B$32,"a")<ROW(1:1),"",1) 同様にA2セルには以下の式を入力して下方向にオートフィルします。 =IF(B2="","",INDEX(Sheet1!A:A,SMALL(INDEX((Sheet1!$B$2:$B$32<>"a")*100+ROW($2:$32),),ROW(1:1))))

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

「別シートに飛ばす」ってハヤリなの? 1)オートフィルタ掛けて、「aを含む」を表示させ、 2)セル選択で「可視セル」のみ選択してコピーして、 3)別シートヘペースト ではダメですか?

  • shintaro-2
  • ベストアンサー率36% (2266/6244)
回答No.1

>マクロは全く分からないので、出来れば関数が良いです!! 「aを飛ばす」という言葉が、 別シートに”1”を記入して、元のシートから”a”を削除するという意味なら 関数では不可能です。

関連するQ&A

  • 用意したセルをランダムに差し込んでいく

    シート名『差し込むセル』に用意したセルをA列に並べています。(数十個) その用意したセルを、別シートの指定した語句があるセルの下に差し込んでいきたいです。 『指定した語句』は、 </h2> です。 別シート:A列24行以降のセルに</h2>があればその下に、 用意したセルをランダムに差し込んでいきたいです。 (別シートのA列24行~の横にずっと続いているので、それらにもランダムに差し込んでいきたいです) シート名『差し込むセル』 A列: AAAA BBBB CCCC DDDD EEEE FFFF GGGG 別シート A列24行以降のセル(B列24行以降~のセル) </h2> ああああ いいいい うううう </h2> ええええ おおおお かかかか きききき </h2> くくくく けけけけ </h2> ここここ シート名『差し込むセル』のA列のセルを </h2>の下に、ランダムに差し込んでいく ↓ </h2> BBBB ああああ いいいい うううう </h2> FFFF ええええ おおおお かかかか きききき </h2> AAAA くくくく けけけけ </h2> CCCC ここここ というように、差し込んでいきたいです。 ※ランダムに差し込むセルは被りなし これは、どのような記述でできるようになるでしょうか? よろしくお願いいたします。

  • excelで、セルの色を他のシートのセルと同じにする。

    EXCELで、Sheet2のセルA1の色を、関数か条件付書式を用いて自動的にSheet1のセルA1と同じにできますか? マクロは使いません。 Winxp & excel2003 です。宜しくお願いします。

  • Excel同一セル内の、アルファベットと数字を別々のセルに置き換える方法を教えてください

    ExcelのA列のセルに、アルファベットと数字の組み合わせが3000行くらい入っています。 アルファベットは1~5個でA~Z、 数字は1~3個で0~9  全て半角です。 の組み合わせです。アルファベットと数字の配置は A1    A12    A123 AB1 AB12 AB123 HD167 SDM12 WB987 の組み合わせです。 (アルファベットと数字はそれぞれまとまっていて、入り混じることはありません) これを、   A  B  C   1 A1  A   1 2 A12 A 12 3 A123 A 123 4 AB1 AB 1 のように、アルファベットと数字を別々にセルに置き換えたいのです。 マクロを使わず、B列以降のセルを使って関数でできないでしょうか? よろしくお願いいたします。

  • エクセルで条件付きで罫線の斜線を引きたいです。

    エクセル2007についての質問です。 ある条件のときに罫線の右下がり斜線を引きたいのですが、条件付書式ではできません。 マクロでしなくてはいけないことはわかったのですが、それ以上は進めなくて困っています。 セル(U2)に数字を打ち込んだらセル(I10:J11),(I12:J13),(I14:J15),(L10:Q11),(L12:Q13),(L14:Q15)(結合したもの)にIF関数とINDEX関数を組み合わせて他のシートからセル(U2)に対応するデーターを呼び出しています。 セル(I10:J11)に呼び出した数値が10未満ならセル(L10:Q11)に罫線で右下がりの斜線を入れ、10以上なら右下がりの斜線を消すということが行いたいです。(他の2つの組み合わせでも同様) 当方マクロを組んだことが全くなく本を読んで独学しているのですが、至急必要ということになり当方の技術ではなんともなりません。助けてください。 ちなみにセル(I10:J11)に書いてある関数は=VLOOKUP($U$2,別シート!$A:$I,3,0) セル(L10:Q11)に書いてある関数は=IF(INDEX(別シート!$A$3:$K$400,$U$2,4)=0,"",INDEX(別シート!$A$3:$K$400,$U$2,4)) といったものです。

  • エクセル セル内での文字列と別シートからの引用につ

    ひとつのセル内に文字列と他のシートの引用を下記のように入れています。 「="あいうえお"&別シート!A1&"かきくけこ"」 このとき、別シートのA1が日付(和暦)の値なのですが、引用すると数字で表示されて しまいます。 これを別シートと同様に日付(和暦)表記させるにはどうしたらよいでしょうか? 表示形式のユーザー定義でやろうとしたのですが、うまくできませんでした。 よろしくお願いします。

  • エクセル関数

    エクセル2010を使っていますが、1つのシートAには販売時の日付、品番、数量、単価、販売額が記されており、同一ファイル内には別のシートBで指定した日付の売上明細を表記したいと思っていますが、うまく関数が組めません。どのような関数を組めば表記できますでしょうか?ちなみにシートAは1か月継続して使うため最大ラインがおおよそ1000行くらいで、シートBは最大50行くらいの表記が可能である必要があります(A5~A55行目) 指定した日付の売上明細(シートB)に表記が必要なので品番、数量、金額になります 指定する日付ですが、シートBの先頭行A1かB1に日付を入力し、A5行目から開始しようと思っています。A5は品番、B5は数量、C5は数量、D5は単価、D6は合計を表記したいと思っています

  • あるセルからあるセルへリンクさせたい

    あるシートのセル(今日の日付けのセル)・・毎日TODAY関数が入っていて、変わる・・そのセルから別のブックにあるシートのカレンダー表の同じ日付けのセルにリンクさせることはできますか?つまりリンク先のセルが毎日自動的に変わる。わかりにくくてすみません。よろしくお願いします。

  • EXCELの関数式内に他のセルの値を取り込む方法?

    EXCEL2002、OSはWIN XPです。よろしくお願いします。 セルのA1にランダムな数字が入ります(実際はマクロでシートの最下行が書き込まれるようになっています。) セルのB1に以下のような式で「xx」の部分にA1の値を入れたいのですが、どのようにすればよいのでしょうか? =countif(C1:Cxx,"") つまりセルB1にはC1からその時使用されている最下行までの空欄セル数を常に表示したいのです。マクロでやれば簡単だと思いますが、できれば関数で表示させたいと思っています。よろしくお願いします。

  • EXCEL 異なるシート間の参照

    EXCELに関しての質問です。 超初心者で基本がわからないままの質問ですみません。 同じブック内の複数のシート(様式は異なります)間の作業です。 片方のシートの日毎のデータを別のシートの日毎のセル に参照し、反映させたい。 INDIRECT関数を用いて、=INDIECT(A3&"!V3")のようにして A3に表示される文字列のシートのセル番地V3を参照し、 他のシートにそのデータを表示したいのですが、 うまくいきません。 A3セルには一ヶ月の日付が入っているので、 日付の入った他のシートを日付ごとに参照していくのですが、 そのシートの中のいつも同じセルV3しか 参照してくれないのです。 このV列のセルも自動的に日付に沿ったセル参照に変更するのは どうしたよろしいでしょうか。 よろしくお願いします。

  • エクセルでマクロで別のセルに

    関数を別のセルに貼り付けると自動的にセル番号が変わりますが、 マクロではどうすればいいでしょうか? 例えば、B1で「=a1」とあるのをコピーし、B2に貼り付けると「=a2」となります。 これをB1にあるマクロをコピーしB2に貼り付けてもマクロ内のセル番号は変わりません。 この場合、どうすればいいでしょうか?

専門家に質問してみよう