• ベストアンサー

困っています。教えて下さい。

A列に値が入力されていて、間に空白のセルがランダムに存在しています。 それを、C列のように抽出したいです。 条件は下記の通りに。 (1)空白のセルに、挟まれたセルを抽出する。 (2)空白のセルに、挟まれたセルで0だけの場合は除外する。 (3)空白のセルに、挟まれたセルで0と他の数値の混合の場合は抽出する。 (4)最終的に、上記の条件で抽出した値の平均値を算出したい。 IF関数を使うのか、マクロを組まなくてはならないのか分からなくなってしまいました。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

抽出の部分をマクロでやってみました。ご参考まで Sub Sample()   nLast = Range("A" & Rows.Count).End(xlUp).Row   nRow1 = 2   If Range("A2") = "" Then nRow1 = Range("A2").End(xlDown).Row      Do While (nRow1 <= nLast)     nRow2 = nRow1     If Cells(nRow1 + 1, 1) <> "" Then       nRow2 = Range("A" & nRow1).End(xlDown).Row     End If     If Application.WorksheetFunction.Sum(Range("A" & nRow1 & ":A" & nRow2)) > 0 Then       Range("C" & nRow1 & ":C" & nRow2) = Range("A" & nRow1 & ":A" & nRow2).Value     End If     nRow1 = Range("A" & nRow2).End(xlDown).Row   Loop End Sub

tta0852lkjpl
質問者

お礼

思い通りのモノになりました。 感動です。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.5

ちなみにマクロを使った方が,簡単は簡単です。 #ただし A列には「数式じゃなく生数字で」データが記入してあるとして。 手順: ブックを開く ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1()  dim h as range  on error resume next  for each h in range("A:A").specialcells(xlcelltypeconstants, xlnumbers).areas   if application.countif(h, "<>0") > 0 then    h.offset(0, 2).value = h.value    h.offset(0, 3).cells(1) = application.average(h)   end if  next end sub ファイルメニューから終了してエクセルに戻る ALT+F8を押し,マクロを実行する。

tta0852lkjpl
質問者

お礼

関数を使う方法と、マクロと方法は色々ですね。 勉強になります。

全文を見る
すると、全ての回答が全文表示されます。
  • pc_knight
  • ベストアンサー率66% (52/78)
回答No.4

以下のマクロをお試し下さい。 Sub cyuusyutsu() Dim r, rs, rf, rc As Long Dim kei As Single For r = 2 To Range("A65536").End(xlUp).Row + 1 If r = 2 Then rs = r End If If Cells(r, "A") = "" Then kei = 0 For rc = rs To r kei = kei + Cells(rc, "A") '空白のセルに、挟まれたセル値の合計を求める Next rc If kei > 0 Then '空白のセルに、挟まれたセル値の合計>”0”をC列に転記開始 For rc = rs To r Cells(rc, "C").Value = Cells(rc, "A") Next rc rs = r Else '空白のセルに、挟まれたセル値の合計=”0”につき転記しない rs = r End If End If Next r MsgBox "抽出終了" End Sub

tta0852lkjpl
質問者

お礼

試してみました。 凄いです。ビックリしました。

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

お示しのようにA2セルから下方にデータがあるとしてB列を作業列として使用します。 B2セルには次の式を入力して下方にドラッグコピーします。 =IF(OR(AND(ROW(A2)=2,A2<>""),AND(A1="",A2<>""),AND(A2<>"",A3="")),MAX(B$1:B1)+1,"") お求めの抽出データはC列に表示させるとしてC2セルには次の式を入力して下方にドラッグコピーします。 =IF(A2="","",IF(AND(COUNT(A1)=0,B2<>"",A3<>""),IF(SUM(A2:INDEX(A:A,MATCH(B2+1,B:B,0)))>0,A2,""),IF(AND(B2<>"",A3="",A2<>0),A2,IF(C1="","",A2)))) 平均値は=AVERAGE(C:C)で求めることができます。 作業列が目障りでしたらB列を選択して右クリックして「非表示」を選択すればよいでしょう。

tta0852lkjpl
質問者

お礼

なるほど! 情報をありがとうございます。 試してみます。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

簡易版: C2に =IF(AND(A1="",A2<>""),AVERAGE(A2:OFFSET(A2,MATCH("",A2:A999&"",0)-1,0)),"") と記入し、コントロールキーとシフトキーを押しながらEnterで入力、下向けにコピー。 挟まれた中にゼロしかない場合はゼロが計算されるので、ゼロになったモノは除外する。 #ちなみにA2:A3は空白に「挟まれていない」ので、計算対象ではありません。 #参考 ゼロしかないのを除外するのがメンドクサイので、代わりにもっとメンドクサイ数式でも我慢できるなら。 C2に =IF(AND(A1="",A2<>"",COUNTIF(A2:INDEX(A:A,MIN(IF(ISBLANK(A2:A9),ROW(A2:A9)))-1),"<>0")>0),AVERAGE(A2:OFFSET(A2,MATCH("",A2:A999&"",0)-1,0)),"") と記入してCtrl+Shift+Enterで入力。以下コピー。

tta0852lkjpl
質問者

お礼

ありがとうございます。 ぜひ、参考にさせていただきます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • LARGE関数で空白セル数だけ飛ばして記入したい。

    LARGE関数で空白セル数だけ飛ばして記入したい。 たとえばA列に連続する数値がランダムに入力されていて、その値の高い値から、LARGE関数で順番をB列に記入しました。しかしA列に空白セルがある場合、空白セル数だけ高い値を飛ばして順番をつけたいのですが、良い方法は御座いませんでしょうか? 例 A列に1から15までランダム記入されていて空白セルが2つあれば13から1、2としていきたいのです。 B1=IF($A$1:$A$15="","",LARGE($A$1:$A$15,A1))↓ と記入すると15、14がエラー表示になって 13から1になってしまいます。それを、13から1、2としていきたいです。 お願いします。

  • A列に1~10000までの値が入力されています。

    A列に1~10000までの値が入力されています。 下記の条件で、B列に印を付けたいです。 条件(1) A列には、途中ランダムに空白のセルがあります。 条件(2) B列に、5連続以上入力があった場合のみ●の印を付けたい。 マクロで、可能でしょうか? イメージは、画像のような感じです。

  • excel 数値と空白がランダムに並んだセルの移動平均

    エクセル2003でA列に適当な数値と空白セルが、上からの順番でランダムに並んでいて、それをもとにB列の各行それぞれに移動平均を出したいと思っています。 移動平均は数値が入力されたセルのみを対象にして空白のセルをとばし、さらに直近の異なる数値をさかのぼって4つ探し、計算対象としたいのですがどのようにしたらよいでしょうか? 宜しくお願い致します。

  • エクセル 関数 別シートへの抽出

    エクセル関数について質問します。 「数値の入ったセルだけを、その行ごと丸々別シートに抽出する方法」 について教えてください。 例、C列に空白セルと1、2や3など、数値の入ったセルがあります。空白セル以外の数値の入ったセルを、その行ごと別シートに抽出したい。 C3とC5に数値が入ってる→3行目と5行目を別シートに抽出する。 このようなことは関数でできるのでしょうか? マクロでないと無理でしょうか? お力をお貸しください。 よろしくお願いします。

  • マクロで空白セルをNULLという文字に置き換えたい

    はじめまして。 初投稿します。 エクセルのマクロは初心者です。 早速質問ですが、 空白セルを'NULL'という文字列に置き換えたいのです。 その空白セルは複数あり、扱うデータの行の中にランダムで 空白のセルがある状態です。IF関数にて処理する場合、 どのように処理すればよいのでしょうか。 わかりづらい文章かと思いますが、よろしくお願い致します。

  • 複数条件の関数を教えてください。

    表)  A B C 1 2 各セルには下記の情報しか入りません。 A1:空白、-、その他の値 B1:空白、-、その他の値 C1:プルダウンで(1)~(5)までのいずれかの値 ※その他の値には、「空白」、「-」、以外で「様々な文字列」が入ります。(ランダム) この場合で、A2のセルに下記の計算式を入れたいです。 A1、B1のいずれかにその他の値が入り、かつC1で(2)が選ばれていた場合には1を立てたい。 A1、B1が空白と-しかない場合には、空白にしたい。 A1、B1のいずれかにその他の値が入っても、C1が(2)ではない場合は空白にしたい。 この場合どのように設定すればいいのでしょうか。 当初は、A1、B1に入るのは「-、その他の値」のみで空白がなかったため下記の設定を していましたが、空白条件が増えたため設定方法がわかりません。 A2=if(OR(A<>"-",B<>"-"),IF(C1="(2)",1,""),"") よろしくお願いします。

  • excel 2003 オートフィルタ!

    excel 2003で、オートフィルタがうまくいきません。 A列の2行目から、1~5までの数字がランダムに並んでいるとします。 A1セルをオートフィルタし、 条件を、オプション>3を含む で指定すると、3がフィルタされてほしいのですが 1つも抽出されません。 3で始まるもだめでした・・ フィルタで抽出するマクロをくんでいて 列は、20列以上あり、 列によって、文字や数値があります。 フォームで列を選び、検索文字を入力して Criteria1:="=*" & 検索文字 & "*", Operator:=xlAnd と言う感じでフィルタしています。 文字はできますが、数値ができないのは、なぜでしょうか・・・

  • 《エクセル》 平均値の求め方

    いつもお世話になります。 列Aに分類、列Bに数値がある場合に、「列Aの重複する分類の平均値を求める。ただし、列Bの値がゼロや空白だった場合、それを計算から除外する」という配列数式を組みたいのですが、うまくいきません。 お手数ですが、宜しくお願い致します。

  • エクセルでの列と列の比較、重複データ個数抽出

    すいません。どなたか教えてください。 今、エクセル2003を使用しているのですが、ある条件でデータの個数が抽出出来ません。 お知恵をお貸しください。   A列 B列 1 あ   あ 2 い   う 3 う    い 4 え    5 お   か A列とB列を比べると、「あ、い、う」の3つのデータが重複しています。 そこで、一つのセルで3個とい値を返したいです。 条件として、 ・計算用のシートや別セルを使わずに、例えば、C1などの1つのセルの中で関数を使用して個数を出したいです。 ・できたらマクロも使用しないでやりたいです。 ・数字ではなく、文字列の比較で、空白行もあります。 やはり、列同士の比較は一つのセルの中でやることは不可能なのでしょうか? どなたかよろしくお願いいたします。

  • 可視セルのみで平均を計算

    Sheet1にある表をオートフィルタで抽出し、その可視セルの三列目にある値の平均値をSheet2のあるセルに出力するマクロを作りたいのですが、どうすればいいでしょうか? ↓これがキー 番号     名前      値 027***  あそこ     12 027***  こちら     0 027***  どちら     5   ・    ・       ・   ・    ・       ・   ・    ・       ・ 右の値の平均値をSheet2に出力

漆芸の湿度管理についての質問
このQ&Aのポイント
  • 漆芸を趣味でしている方が湿度管理に悩んでいます。塩の飽和水溶液を使用して湿度を安定させる方法や、他に良いアイデアがあれば教えて欲しいとのことです。
  • 漆風呂と呼ばれる密閉箱で漆を乾燥している際に湿度を保つ方法を探しています。塩の飽和水溶液を利用する方法や、他のアイデアについてアドバイスを求めています。
  • 漆芸の湿度管理に苦戦している方が質問しています。塩の飽和水溶液を使用して湿度を安定させる方法があるのか、また他に効果的な方法があるか教えて欲しいそうです。
回答を見る

専門家に質問してみよう