• ベストアンサー

【Excel】取り出した値を順番に表示

Excel2003を使用しています。 A列に『計』と入力された行のGセルの値を取り出して、順番に表示することはできますか? 例えば、A20セル、A24セル、A37セルにそれぞれ『計』と入力されていて、G20セル、G24セル、G37セルにそれぞれ『100』、『200』、『300』と入力されていた場合、どこか別の列、仮にI1セルから順番に『100』、『200』、『300』と表示させたいのですが、関数で可能でしょうか? F列の『計』は不規則に入っているので、空白行のない状態で順番に表示したいと思っています。 よろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。Wendy02です。 一応、rx-z5815 さんの表の雰囲気を前回、読みきっているつもりです。確かに関数でも出来ますが、累計の計算式を貼り付ける時に、「ついで」という方法もあるわけですね。ただ、どうあるべきである、ということは、こちらでは、なんとも言えませんが、ただ、あまり広範囲にデータがある場合は、マクロかとは思います。 一応、ご質問にしたがって、こちらも数式で考えてみました。 >A20セル、A24セル、A37セルにそれぞれ『計』と入力 たぶん、こちらが「例えば」の方で、 >F列の『計』は不規則に入っているので、 こちらが本当に方ということかな? 経験的に、得てして、こういう作り込みは、後々から、いろんなアイデアが加わってきてしまい、最後にてんこ盛りになって計画倒れになることがあるのですが、それはそれで、決して、無駄にはならないはずです。 F列検索ということで、作りました。 =IF(ROW(A1)>COUNTIF($F$1:$F$100,"計"),"",INDEX($G$1:$G$100,SMALL(INDEX(($F$1:$F$100="計")*ROW($A$1:$A$100),,),COUNTIF($F$1:$F$100,"<>計")+ROW(A1)),1)) これは、F1 からでも、F2 からでも、最初のトップは同じ式で、フィルダウン・コピーして出します。 [ちょっと、本音トークを特別に書いておきます。これは、いわゆる『Q&A 掲示板的な回答』です。こういう書き方が、すべてではありません。補助列を使って書いた方がよいことも多いです。]

rx-z5815
質問者

お礼

いつもありがとうございます。 >>A20セル、A24セル、A37セルにそれぞれ『計』と入力 >たぶん、こちらが「例えば」の方で、 >>F列の『計』は不規則に入っているので、 >こちらが本当に方ということかな? おっしゃるとおりです。お恥ずかしい。。(^_^;) 質問を出す前に自分なりにいろいろ考えて試してみたのですが、なかなか思い通りにいかず、退社前に急いで質問文を作成し投稿したので、質問文的には“F列”→“A列”の間違いです。 この質問に限らず、質問文には例として内容を書き、回答をいただいた数式やマクロのコードを単にコピペするだけということはしないようにしています。実際に自分のやりたいことへの参考にさせていただいています。 仕事柄、毎月決まった書類をいくつも作成するので、ひな型がたくさんあります。もっと効率よく仕事ができるよう、いろんな書類を見直している最中です。今後ともよろしくお願いします<(_ _)>

その他の回答 (6)

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.7

訂正 2つ目の式に誤記が見止られました 誤記 =IF(COUNTA(F:F)<ROW(F1),"",OFFSET($L$1,LOOKUP(1,{1},SMALL(($F$1:$F$6535<>"計")*65555+ROW($F$1:$F$6535),ROW(A1)))-1,0,1,1)) 修正 …SMALL(($F$1:$F$6535<>"計")*65555+ROW($F$1:$F$6535),…          ↓ …SMALL(($A$1:$A$65535<>"計")*65555+ROW($F$1:$F$65535),… 正規 =IF(COUNTA(F:F)<ROW(F1),"",OFFSET($L$1,LOOKUP(1,{1},SMALL(($A$1:$A$65535<>"計")*65555+ROW($F$1:$F$65535),ROW(A1)))-1,0,1,1))

rx-z5815
質問者

お礼

回答ありがとうございます。 配列数式は書籍等で目にしたことはあるのですが、実際使ったことはありません。 良い機会ですし、教えていただいた配列数式を使ってみようと思います。

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.6

『計』はA列に,Gセルの値を取り出すものとします =IF(COUNTA(B:B)<ROW(P1),"",OFFSET($G$1,SMALL(($A$1:$A$65535<>"計")*65555+ROW($A$1:$A$65535),ROW(A1))-1,0,1,1)) とし「CONTROL」+「ALT」+「Enter」で配列数式として確定 または =IF(COUNTA(F:F)<ROW(F1),"",OFFSET($L$1,LOOKUP(1,{1},SMALL(($F$1:$F$6535<>"計")*65555+ROW($F$1:$F$6535),ROW(A1)))-1,0,1,1)) でそのままエンター 全データ行数の半分くらいまで下へコピーしてください

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんばんは。Wendy02です。 >配列数式は書籍等で目にしたことはあるのですが、実際使ったことはありません。 >良い機会ですので、教えていただいた配列数式を使ってみようと思います。 一度は、覚えておく必要があるかもしれません。私個人は、マクロで利用する時にすごいと思うのです。例を挙げておきます。 '-------------------------------------------- Sub TestList() 'データを作る Dim i As Long  For i = 1 To 100   Cells(i, 1).Value = i  Next End Sub '-------------------------------------------- Sub GenMacro1() '奇数の合計 Dim mTotal As Double Dim i As Long For i = 1 To 100  If Cells(i, 1).Value Mod 2 = 1 Then   mTotal = mTotal + Cells(i, 1).Value  End If Next  MsgBox mTotal End Sub '-------------------------------------------- Sub ArrayFomulaMacro1() '奇数の合計(配列数式利用) Dim mTotal As Double   mTotal = Evaluate("SUM((MOD(" & Range("A1:A100").Address & ",2)=1)*(" & _       Range("A1:A100").Address & "))")   MsgBox mTotal End Sub また、(いつまで使えるかは分かりませんが)Ver.4 マクロ関数は、配列で出力しますので、配列数式の知識がないと、歯が立たないのです。例えば、ページの境目の自動改行の入る位置の出力は、Ver.4 マクロ関数ですと配列で出力されます。 ところで、配列数式は、日進月歩とはいいませんが、少しずつ進化しているようです。私も配列は一通り知ってはいたつもりで、新しいものはないと思っていましたが、まだ、あるようですね。誰かが発表すると、またたく間に、その方法は広まっていまきすね。時には、海外まで広まるようです。 ただ、配列数式のパターンは、そんなに多くない(はず)です。

rx-z5815
質問者

お礼

おはようございます。 マクロでの例まで挙げていただき、ありがとうございます! 配列数式を理解した上で、今回回答いただいたマクロでも試してみようと思います。

  • rin01
  • ベストアンサー率43% (33/76)
回答No.3

あれ~ツ!! >A列に『計』と入力された行のGセルの値を取り出して と >F列の『計』は不規則に入っているので A列ではないのでしょうか? F列でしたら I1: =IF(COUNTIF(F:F,"計")<ROW(),"",INDEX(G:G,1/LARGE(INDEX(($F$1:$F$100="計")/ROW($1:$100),),ROW()))) です。。。Ms.Rin~♪♪

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

次の方法は如何でしょうか。 ・仮に抽出範囲は200行としています。 ・I1セルに次の数式を設定して下方向にコピーして下さい ・配列数式の為、入力完了時にshift+ctrl+enterキーを同時押下して下さい。 =IF(ROW($A1)-1<COUNTIF($F$1:$F$200,"計"),INDEX(G:G,SMALL(IF($F$1:$F$200="計",ROW($F$1:$F$200),65536),ROW($A1))),"")

rx-z5815
質問者

お礼

回答ありがとうございます。 配列数式は書籍等で目にしたことはあるのですが、実際使ったことはありません。 良い機会ですので、教えていただいた配列数式を使ってみようと思います。

  • rin01
  • ベストアンサー率43% (33/76)
回答No.1

こんにちは~♪ I1: =IF(COUNTIF(A:A,"計")<ROW(),"",INDEX(G:G,1/LARGE(INDEX(($A$1:$A$100="計")/ROW($1:$100),),ROW()))) 下にコピーしてください。 データ行が多いと処理が重くなりますけれど~。。。 。。。Ms.Rinでした~♪♪

rx-z5815
質問者

お礼

回答ありがとうございます。 データ行数は、そのときどきで違いますが、だいたい300行前後です。 教えていただいた数式で試してみます。 No.3でも再度回答をいただきまして、スミマセン。。 質問文は例として内容を書き、実際したいことへの参考にするようにしていますので、質問文的には“F列”→“A列”の間違いです。 お手数をおかけしました<(_ _)>

関連するQ&A

  • Excel2010で3つの値のうち最も少ない値

    Excel2010で3つの値のうち最も少ない値を返して、もしその値が空白だったらゼロと認識する。としたいのですが、 どのような関数にしたらよいのでしょうか? どなたかおしえてください。 例) A1:3 A2:5 A3:(空白) この3つのセルのうち最も少ない数を返す。 =MIN(A1,A2,A3) だと、値3が返ってしまいます。空白もゼロと認識して値0を返したいのです。 ですが、この3つのセル以外に空白セルを残すため、Excel昨日の「空白にゼロ値を表示する」を使いたくありません。 どうぞよろしくお願いいたします。

  • Excel関数について

    Excel関数について質問です。 以下の二つ (1) 下のように、セルA1から入力されてるものを、1、2、3・・と数字順に並び替える良い方法はありますでしょうか。 A-1 A-10 A-10A A-100 A-2 A-20 A-22.5 ・ ・ A-555 ・ ・ (2) 一行目と二行目に値の入ったセルと空白セルが混在しています。どちらも同じものに対する値の為、一行目にまとめようと、一行目の空白セルに二行目のセル(下)に値がある場合はその値を返し、空白の場合は空白のままにするというIF関数を使いましたがうまくいきませんでした。三行目と四行目、五行目と六行目・・とかなりあります。良い方法を教えていただけますでしょうか。 よろしくお願いいたします。

  • Excel2002でセルへの数値代入

    使用しているのはExcel2002なんですが 関数などを使用して空白セルへ数値及び文字列を 代入することって可能でしょうか? 例を挙げると、 セルA1に7という値を入力すると、 セルC1にある関数が「10-A1」という計算を行って セルB1に3という値を返すようにしたいのです。 また、セルB1に4という値を入力すると、 セルC1で計算を行い、セルA1には6が返る。 このようにセルA1、B1ともに、人の手で数値の 入力が行われる可能性があるので、表示部分のセルに 関数式を記述せず、空白としておく。 C1に入力する関数は IF(B1="",10-A1,10-B1) として、この結果を、またIFなどを使って 空白の方のセルに入力してあげればいいかなー というところまでは考え付いたのですが・・・ どなたか教えてください。

  • エクセル関数で飛び飛びのデータの値を表示したい

    こんにちは。お世話になります。 エクセル(2000)で質問です。 ある表があり、一番左の列にはインデックス(仮にB列とします)、 2列目(C列)には日付、3列目(D列)には値が入っています。 イメージだと   A  B    C   D   1   コーラ  5/30  20    2        6/10  10    3        6/11  20    4   ミルク  4/30  10    5        5/11  35    のような感じです。(セルは結合されてません) データベースとして扱うならば、B2にもコーラという値が 入っている、という認識ですが、実際は空白セルとなっています。 そこで、A列に、Bのインデックスの値を入力したいのですが、 どのようにしたら良いのか悩んでいます。 上記で言うと、A1~A3にはコーラ、A4~A5にはミルク、という 値がはいってほしいです。 次のインデックスまでの空白セルの数は不規則です。 データの件数は何千件とかなり多いので、関数で一気に出せると 非常に助かります。 分かりにくい質問で申し訳ありませんがどうぞよろしくお願いします。

  • [Excel]入力規則の数式が計算されずエラー表示も出ないようになりま

    [Excel]入力規則の数式が計算されずエラー表示も出ないようになりました お世話になります。(先日もこちらではお世話になりました。ありがとうございます。) EXCEL 2007 を使用しています。 入力規則を使用して数式を実行したいと思い 初めて[入力規則]-[ユーザー設定]-[数式]欄に数式を書いて結果を得ようと してみたのですがエラーとなってしまいました。 数式に間違いがあるらしいエラーだったため何度か数式を見直し・やり直したのですが、エラーでした。 入力規則ではなく普通のセルにこの数式を入れると問題なくほしい値が帰ってくるので、 なぜ入力規則では、エラーが出るのか分かりません。 また、何度も入力規則をやり直しているうちに エラー表示ウィンドウが出なくなりました。出ないだけなら成功したと思うのですが、 エラーウィンドウが出ないだけで、数式は実行されません。 入力規則の全ての値をクリアにしてから再度 設定、式を入力しても エラー表示ウィンドウも値も出てきません。 試しにA1セルに簡単な数式を入力規則で行ってみました。 =1+2+3 とか =SUM(B1:D1) (↑値は6になる) これでもエラーも数式の結果となる値もでません。 ちなみに入力規則のリスト表示など他の機能は問題なく値が帰ってきます。 何か間違っているのでしょうか? ちなみに入力規則に記入したかった数式は↓になります   =IF(INDIRECT("F"&ROW())>0,ROW()-2," ") 数式の説明: ・もしF列のこのセルと同じ行に何か値が入っていれば【行-2】になる値を表示   A3セル 入力規則を適用   F3セル 何か値が入っている   A3セル A3といのは3行目のことだから 3-2=1 となり、計算結果の 1 が表示される ・もしF列のこのセルと同じ行に何も値が入っていなければ空欄のままにする というものです。 お分かりになる方いらっしゃいましたらご教授下さい。 よろしくお願い致します。

  • Excel2008 for Macで日付の値が、欧米表示に置き換わってしまう

    Microsoft Excel 2008 for Macで質問です。 別のMicrosoft Excel 2008 for Macで作成したExcelブックを開くと、 すでに「2009.09.01」と日付が入力されているセルの値が、 「09/01/2009(月/日/年号)」という欧米で良く使われる形式に 置き換わってしまう現象が起こりました。 具体的には、仮に【A】というMacのExcel2008で 「2009.09.01」という値をセルに入力し、 それを別の【B】というMacのExcel2008で開くと、 同じセルの値が「09/01/2009」となってしまっているということです。 セルには「dd"日("aaa)」の書式設定が設定されていて、 セルの表示自体は「1日(火)」と【A】【B】とも同じく 表示されていますが、元の入っている値の形式が 【A】2009.09.01 【B】09/01/2009 となって違うのは、なぜでしょうか? Excelの中の環境設定を見ても、特にそれらしき設定が変更できる 箇所はなく、原因がわかりません。 ちなみに、【B】のMacのExcelで、「dd"日("aaa)」の 書式設定されている空白セルに「2009.09.01」と入力しても、 日付とは認識されず、文字列として、そのまま「2009.09.01」と 表示されてしまいます。 何か原因がおわかりでしたら、お教えください。

    • 締切済み
    • Mac
  • エクセルでセルの先頭4文字から特定の値を表示

    宜しくお願いします。 タイトルのとおりですが、例を書きます。 A列に「1234-XXXXXX」と「5678-XXXXXX」(Xはランダムな数字)と空白セルが並んでいるとき、 D列に先頭の4文字が ・「1234」の場合「山」 ・「5678」の場合「川」 ・空白かその他の値の場合セル背景色を赤 ・空白セルに「1234-XXXXXX」や「5678-XXXXXX」を入力したら、背景色をなくし「山」「川」それぞれの値 と表示したいと考えています。 毎日シートをコピーして値はクリアし、さらにデータは その他のシートから行コピーし値貼り付けするので、 関数などの数式等だと消えてしまい、その都度式を コピー&ペーストしなければならないので、 できればセルに式入力する以外(マクロ?入力規則?) の方法ご教授いただけると助かります。 長く分かりづらいところがありましたら申し訳ございません。 宜しくお願い致します。

  • 【Excel】2つの値のどちらかを抽出する

    A、Bのセルがあり、どちらのセルにも文字列が入っていたり、入っていなかったりとします。 そこでセルCに、A、Bどちらかの文字列を入れたいと考えたとき、どのような関数が考えられますでしょうか? 条件は以下のようにします。 (1)A,Bとも文字列か、空白のどちらか (2)Aの方が優先される。A,Bのどちらも値が入っている場合はA、Aが空白で、Bに値が入っている場合はBの値がCに反映される。 宜しくお願い致します。

  • Excel2003 セルの値が0の時、表示させない

    Excel2003に関する質問です。 セルの値が”0”のとき、”0”が入力されないようにしたいです。 IF関数を使えば非表示に出来るのは知っているのですが、 そのセルには既にSUM関数が入力されています。 SUM関数の結果が”0”になるセルの”0”を非表示にしたいんです。 1つのセルに対して関数を2つ入力することは可能でしょうか。 また、SUM関数が入力されているセルに「条件付き書式」で 「セルの値が0の時、文字の色を白にする」だと、 複数のセルを範囲指定した際に、白文字が見えてしまいますので、 これ以外の方法があれば教えてください。 よろしくお願いします。

  • 【Excel】複数の条件設定

    いつもお世話になります。Excel2003を使用しています。 下記のような表があります。   B     D     F     L 1 0100   ○社        100 2                  200 3                  300 4             計    600 5 6 0101   ×社        100 7                  150 8             計    250    :    : B列に数値が入力されていたら、同行のDセルの値を取り出し、さらに、その行以下で一番近い計の値(Lセル)を取り出したいのですが、関数で可能でしょうか?(社名とその計を取り出したいということです。) P列以降が空欄ですので、そこに結果を表示させたいと思っています。 この表は支払明細書で、毎月20社前後になりますので、明細書とは別に社名と支払金額(計)の一覧表を作成したいと思って、質問させていただきました。よろしくお願いします。

専門家に質問してみよう