[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロにて』(涙)
いつもお世話になります。 もしお分かりでしたら、またお力添えを頂きたく投稿させて頂きました。 例えば、A列〜L列まで何かしらのデータが入っているとします。 L列には住所データが入っているのですが、住所ごとに並び替えがされています。 同じ住所ごとに、A列〜J列まで入っている数字データを計算し、同じ住所の一番上の 行K列に計算結果を出すという事は可能でしょうか?
A B C D E F G H I J K L 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 合計 住所 1 1 1 東京都○○区 1 東京都○○区 1 1 東京都○○区 1 1 東京都××市 1 1 東京都××市 1 1 東京都××市 1 1 東京都××市 1 千葉県□□市 1 1 1 千葉県□□市
分かりづらくてすみません。 上記のような表だと、住所が同じ行が2行だったり3行だったりします。 これを、同じ住所ごとにA列〜J列の数字を計算し、各住所の先頭行のK列に合計を反映させたいのです。 このような事はマクロで可能でしょうか? どうぞ、宣しくお願い致します。
マクロでないとダメですか? 数式ですが、 K2=IF($L2=$L1,"",SUMPRODUCT(($L$2:$L$10=$L2)*$A$2:$J$10)) と入力し、フィルダウンでどうでしょう。 (ROUGE)
ROUGEさん、早々のコメントありがとうございます!! しかも出来ました♪ マクロでないと出来ないとおもっていたので、関数で出来るなんて 思っておりませんでした。 本当にありがとうございました!!! (涙)
度々申し訳ありません。 先ほどの表に、A列に氏名を追加し、L列〜O列の各住所の先頭部分に10月の数字を抽出させたいと思います。 先ほどROUGEさんに教えて頂いた式を参考に、SUMPRODUCTをVLOOKUP関数に変えてやってみたのですが、最初の行のみ成功し、ドロップダウンすると変になってしまいます。 数時間悩んだのですが、どうしても分かりません。 ちなみに、私の考えた関数は、L2に『=IF($Q2=$Q1,"",VLOOKUP(L1,$A:$K,11,0))』で、M,N,Oまで列部分を変更して入力しました。 こんな分かりづらい説明で理解して頂けますでしょうか? 申し訳ありませんが、どうぞ宜しくお願い致します。 (涙)
A B C D E F G H I J K L M N O P Q 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 加藤山田 鈴木佐々木 合計 住所 加藤 1 1 1 東京都○○区 山田 1 東京都○○区 鈴木 1 1 東京都○○区 加藤 1 1 東京都××市 山田 1 1 東京都××市 鈴木 1 1 東京都××市 佐々木 1 1 東京都××市 加藤 1 千葉県□□市 山田 1 1 1 千葉県□□市
10月分だけで良いのですかね? L2に =IF($Q2=$Q1,"",SUMPRODUCT(($Q$2:$Q$10=$Q2)*($A$2:$A$10=L$1)*$K$2:$K$10)) としてみるのはどうでしょう。
(HANA)
(HANA)さん! できました!! いまさらですが、VLOOKUPを使用する為には、昇順に並んでいないとだめだと気づきました・・・ お手数をおかけして、すみませんでした。 助かりました♪♪♪ どうもありがとうございました☆☆ (涙)
済みません、夕方は少し時間が無かったもので あまりじっくり見れていませんでした・・・・。
>いまさらですが、VLOOKUPを使用する為には、昇順に並んでいないとだめだと気づきました・・・ VLOOKUP関数が使用できる条件として 「必ず昇順に並んでいる必要がある」 と思って居られる方は多いようですが 「必ず」ではありません。 VLOOKUP関数は VLOOKUP(検索値,範囲,列番号,検索の型) ↑の様に書きますが、この時~~~~~~~~検索の型に 【TRUEを指定】あるいは【省略】したときに 昇順に並んでいる必要があります。 【FALSEを指定】した場合はどの様な並びでも検索出来ます。
(涙)さんの作成なさった式では VLOOKUP(L1,$A:$K,11,0) ~ 【0(FALSE)が指定】されているので、 上手く行かなかった理由は 「範囲の先頭列が昇順になっていなかったため」ではありません。
この式が、入力した式のコピペで有れば 二つ問題があると思います。 一つは >最初の行のみ成功し、ドロップダウンすると変になってしまいます。 式を5行目までフィルドラッグすると VLOOKUP(L4,$A:$K,11,0) ~~検索値として、L4の値が使用されます。 ここは、常に1行目を参照する必要があるので 行を絶対参照にする必要があります。 VLOOKUP(L$1,$A:$K,11,0)
もう一つの問題点としては、範囲の中に検索値が複数存在する事です。 VLOOKUP関数は、最初にヒットした行の指定列の値を返します。 上の様に式を直して、下にフィルドラッグしても、一行目に出た結果と 同じ結果が表示されてしまいます。
それぞれの行を違うものとして取り扱いたい場合は 検索値をユニークな物とし、範囲の先頭列もそれに対応して ユニークになっている必要があります。 例えば↓の様に、A列に一列挿入して 作業列を作ります。 「名前&住所」の項目にすれば、各行がユニークになりますので 検索値も「名前&住所」として、検索出来ます。 [A] [B] [C] [D] [E] [F] [G] [H] [1] 1月 2月 3月 4月 5月 6月 [2] 加藤_東京都○○区 加藤 1 1 1 [3] 山田_東京都○○区 山田 1 [4] 鈴木_東京都○○区 鈴木 1 1 [5] 加藤_東京都××市 加藤 1 1 [6] 山田_東京都××市 山田 1 [7] 鈴木_東京都××市 鈴木 [8] 佐々木_東京都××市 佐々木 1 [9] 加藤_千葉県□□市 加藤 1 [10] 山田_千葉県□□市 山田 1 1 [I] [J] [K] [L] [M] [N] [O] [P] [Q] [R] [1] 7月 8月 9月 10月 加藤 山田 鈴木 佐々木 合計 住所 [2] 0 0 0 #N/A #N/A 東京都○○区 [3] 0 0 0 #N/A #N/A 東京都○○区 [4] 0 0 0 #N/A #N/A 東京都○○区 [5] 0 0 1 1 2 東京都××市 [6] 1 0 0 1 1 2 東京都××市 [7] 1 1 0 0 1 1 2 東京都××市 [8] 1 0 0 1 1 2 東京都××市 [9] 0 0 #N/A #N/A #N/A 千葉県□□市 [10] 1 0 0 #N/A #N/A #N/A 千葉県□□市
A2:A10に =B2&"_"&R2 M2:P10に =VLOOKUP(M$1&"_"&$R2,$A:$L,12,FALSE) Q2:Q10に =SUM(M2:P2) 何れも先頭セルの式です。各セルは、コレをフィルドラッグした物です。
分かりやすいように、エラー処理等全く加えておりません。 例えば、エラー処理等を施した物は A2:A10に =IF(B2="","",B2&"_"&R2) M2:P10に =IF(OR($R2="",$R1=$R2),"",IF(COUNTIF($A:$A,M$1&"_"&$R2),VLOOKUP(M$1&"_"&$R2,$A:$L,12,FALSE),0)) Q2:Q10に =IF(M2="","",SUM(M2:P2)) の様になると思います。 (それぞれ、最終行以上フィルドラッグできます。) [M] [N] [O] [P] [Q] [R] [1] 加藤 山田 鈴木 佐々木 合計 住所 [2] 0 0 0 0 0 東京都○○区 [3] 東京都○○区 [4] 東京都○○区 [5] 0 0 1 1 2 東京都××市 [6] 東京都××市 [7] 東京都××市 [8] 東京都××市 [9] 0 0 0 0 0 千葉県□□市 [10] 千葉県□□市
ちなみに、Q列の「合計」って全体の合計だったのですかね? (10月のみではなく・・・。)
(HANA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.