出産前後の痔にはご注意!

少々面倒なのですが、どうしても解決できないのでお教えください。
  A   B    C   D
1:結果1 結果2  合計  順位
2:8    8    16    1
3:8.275  7.325  15.6   2
4:7.125  8.475  15.6   3←どうして?
5:6    6    12    4

Cの列は「=SUM(A2,B2)」のようにしています。
Dの列は「=RANK(C2,C$2:C$5,0)」のようにしています。
順位は1、2、2、4となって欲しいのですが、上のように1、2、3、4となってしまいます。
A3、B3、A4、B4の値を変えると1、2、2、4になるのですが、上の値だとどうしてもなりません。

面倒ですが、どうしても解決できないので、お教えください。

このQ&Aに関連する最新のQ&A

A 回答 (7件)

セルC6 に「=SUM(C2:C5)」合計を入れてみます。


   → (59.2)
セルE3 に「=C3/$C$6」
   → (0.26351351351351400)
セルE4 に「=C4/$C$6」
   → (0.26351351351351300)

電卓で 計算すると、
   15.6/59.2=0.26351351351351351351351351351351

小数点15位に誤差がありました。

---

同じ様に別の表計算でやってみました。

セルE3 に「=C3/$C$6」
   → (0.26351351351351300)
セルE4 に「=C4/$C$6」
   → (0.26351351351351300)
誤差がありませんでした。
しかし rank は、上と同じ 1 2 3 4 です。

これを、100倍してみました。
セルF3 に「=E3*100」
   → (26.351351351351400)
セルF4 に「=E4*100」
   → (26.351351351351300)
小数点13位に誤差が出ました。
    • good
    • 0
この回答へのお礼

皆様、ほんとうにありがとうございます。
ある大会での結果発表に影響が出てしまい、責任を感じていたのですがその原因が分からずがっくりきていました。
皆は私の集計ミスだと思っているでしょうが、まさか、Excelの計算そのものに誤差があるとは知りませんでした。
誤差が出るということを知らないという意味ではやはり私のミスか…。

それよりなにより、皆様の丁寧な回答と原因解明の洞察力に敬服します。
ありがとうございました。

お礼日時:2007/07/25 16:01

こちらで大変分かりやすく説明されています。

(対処方法も)
小数点以下を扱う場合には必見だとおもいますよ
http://pc.nikkeibp.co.jp/pc21/special/gosa/index …
    • good
    • 0
この回答へのお礼

さっそく読んでみます。非常に参考になりそうです。ありがとうございます。

お礼日時:2007/07/25 15:55

こんにちは。



すみません、私の前回の#2の回答間違えました。
ワークシートの表には出てきませんが、誤差を確認しました。

>1:結果1 結果2  合計  順位
>2:8    8    16    1
>3:8.275  7.325  15.6   2
>4:7.1255 8.4745  15.6   2←【ここ】
>とどちらも2位となります。
>丸め誤差ゆえと考えればよろしいのでしょうか。

こちらは、同じ値で、15.6 です。
しかし、以下は、誤差が出ています。

>3:8.275  7.325  15.6   2
>4:7.125   8.475  15.6   3

こちらは、同じ15.6でも、等しくありません。「浮動小数点誤差」が発生しています。プログラムの中では、1.77635683940025E-15 の差があります。
    • good
    • 0

多分エクセル特有の小数点以下の誤差のせいだと思います。



合計値を
=ROUNDDOWN(SUM(A3:B3),10)
というようにして、小数点以下10位までを有効数字とみたら解決できるのではないでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
早速ためしてみます。
でも、そのようにしなければならないなんて、ちょっとショックです。

お礼日時:2007/07/25 15:54

#2 です。



>ただ、同順位が同じ値になるときとならないときがあるというのが分からないのですが・・・。
>たとえば、4:を

>4:7.1255  8.4745  15.6  22

それは、どういう意味ですか? Rank関数は、同位というのは存在しないはずです。

思ったとおりではない例を出していただかないと、ちょっと回答が出来ません。
それは、思ったとおりではない場合は、その計算過程の数値は、他のExcelも同様の解を返します。

それは、小数点が含まれるときは、その小数点以下の数字を違っている部分まで出してみないと、分かりません。同じ計算値だと思ったのが違うことがあります。全ての小数点を含む「演算(足し算・引き算・掛け算・割り算)」に、Excelでは、「揺らぎ」というものが存在します。(ただし、Excel97以上は、多少の補正はされています。かなり奇妙な丸めの補正のようで、根本的な解決は関数に頼るしかありません。)

#1さんのご指摘の内容です。私は、それを、「浮動小数点丸め誤差」と言っています。切捨て、四捨五入など、文字固定法というような、いくつかの措置方法があります。

この回答への補足

丁寧な説明ありがとうございます。
十分理解できていないのかもしれませんが、ヘルプの解説に
・・・・・・・・
RANK 関数では、重複した数値は同じ順位と見なされます。数値が重複していると、それ以降の数値の順位がずれていきます。たとえば、昇順に並べられた整数のリストがあり、そのリストに 10 が 2 度現れ、その順位が 5 であるとき、11 の順位は 7 となります (順位が 6 の数値はありません)。
・・・・・・・・
とあります。下のCの列はsumで計算しています。
  A   B    C   D
1:結果1 結果2  合計  順位
2:8    8    16    1
3:8.275  7.325  15.6   2
4:7.125  8.475  15.6   3←【ここ】
となるのに
4:を
4:7.1255 8.4745
とすると
1:結果1 結果2  合計  順位
2:8    8    16    1
3:8.275  7.325  15.6   2
4:7.1255 8.4745  15.6   2←【ここ】
とどちらも2位となります。
丸め誤差ゆえと考えればよろしいのでしょうか。

補足日時:2007/07/25 12:07
    • good
    • 0

こんにちは。



良く出る質問ですね。同順位の時は、単に上から順位をつけるという考え方って、欧米流なんでしょうね。(^^;

いくつか方法があります。
例えば、こんな方法があります。どれも、あまり短くない式のようです。

=SUMPRODUCT(($C$2:$C$5>C2)*(MATCH($C$2:$C$5,$C$2:$C$5,0)=ROW($C$2:$C$5)-1))+1
($C$2:$C$5)-1 としているのは、もともと、1番目からなので、$A$1 としてよいのですが、紛らわしくなるので、こう書きました。
始まりが、C3からの時は、-2, C4からの時は、-3となり、必ず、行数が、1になるように書きます。

この回答への補足

ありがとうございます。
ただ、同順位が同じ値になるときとならないときがあるというのが分からないのですが・・・。
たとえば、4:を

4:7.1255  8.4745  15.6  22

とすると、ちゃんと22になるのです。

補足日時:2007/07/25 11:12
    • good
    • 0

8.275とか7.475などの数値がありますが、これらの数値は「小数点4桁以降もあるものを表示形式で小数点以下3桁を表示する」にしていませんか?



有効桁数にあまり気を使わなくてもよいならC列の式は
=ROUNDDOWN(SUM(A2,B2),3)
で小数点以下4桁は切り捨てるとよいでしょう

この回答への補足

小数点以下10桁表示するとして、
8.2750000000  7.3250000000  15.6000000000
のようになっても同じなのですが。
他の数値にして合計が同じになるようにすると同順になるのです。

補足日時:2007/07/25 11:10
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q(Excel)RANK関数で同じ値なのに違う順位になる

Excel2000を使用しています。

下記の表を作成して、
 F列には、=SUM(A1:E1)-MIN(A1:E1)-MAX(A1:E1)
 G列には、=RANK(F1,$F$1:$F$4)
を入力していますが、
F2とF3は同じ値になるのに順位が違って出てきます。

確か、RANK関数は同値の場合同じ順位が出てくると思うのですが、
そうならないので困っています。

ちなみに、F列に数式ではなく計算結果を直接入力した場合には
同じ順位が出てきました。

どうしてそのようなことになってしまうのでしょうか?
ご存知の方がいましたら教えてください。


(A) (B) (C) (D) (E) (F) (G)
 9.50  9.20  9.35  9.60  9.45 28.3000  1
 9.40  9.30  9.35  9.55  9.45 28.2000  2
 9.20  9.45  9.40  9.35  9.55 28.2000  3
 9.45  9.30  9.30  9.40  9.50 28.1500  4


宜しくお願いします。

Excel2000を使用しています。

下記の表を作成して、
 F列には、=SUM(A1:E1)-MIN(A1:E1)-MAX(A1:E1)
 G列には、=RANK(F1,$F$1:$F$4)
を入力していますが、
F2とF3は同じ値になるのに順位が違って出てきます。

確か、RANK関数は同値の場合同じ順位が出てくると思うのですが、
そうならないので困っています。

ちなみに、F列に数式ではなく計算結果を直接入力した場合には
同じ順位が出てきました。

どうしてそのようなことになってしまうのでしょうか?
ご存知の方がいましたら教えてくださ...続きを読む

Aベストアンサー

計算精度の問題です。
計算処理をおこなうと、0が
0.00000・・・・01になる場合
があります。
そのため、見た目は一致しているけれど
異なる値になっていると思われます。
ツールメニュー・オプション・計算方法・
「表示桁数で計算する」のチェックをON
して試してください。

Qエクセルで、自動的にランク順に順番を表示させる方法

エクセルで、自動的にランク順に順番を表示させる方法

エクセル2003を使用しています。

T列に名前、U列にその人の点数が表示されています。
これに対し、点数の高い順に自動的に並べ替えてB列に順位、C列に名前を表示させたいです。

同じ点数がある場合、以下の様な表示をしたいです。
1位 Aさん 80点
2位 Bさん 70点
2位 Cさん 70点
4位 Dさん 60点

表示>並べ替えは使用しないで、関数で対応したいです。
分かる方いましたら、お願いします。

Aベストアンサー

なるべくシンプルな計算式で。

添付図:
S2に
=RANK(U2,U:U)+ROW()/1000
以下コピー。

B2に
=VLOOKUP(SMALL($S:$S,ROW(A1)),$S:$U,COLUMN(),FALSE)
B,C列にコピー。

A2に
=RANK(C2,C:C)
以下コピー,
必要に応じてA列を右クリックしてセルの書式設定の表示形式のユーザー定義で
0位
と設定しておくなど。

Qエクセル 0や空白のセルをグラフに反映させない方法

以下の点でどなたかお教えください。

H18.1~H20.12までの毎月の売上高を表に記載し、その表を元にグラフを作成しています。グラフに反映させる表の範囲はH18.1~H20.12の全てです。
そのためまだ経過していない期間のセルが空白になり、そこがグラフに反映され見づらくなります。
データを入力する都度グラフの範囲を変更すればいいのですが、うまく算式や設定等で空白や0円となっているセルをグラフに反映させない方法はありますか?

お手数ですが、よろしくお願いいたします。

Aベストアンサー

売上高のセルは数式で求められているのですよね?
それなら
=IF(現在の数式=0,NA(),現在の数式)
としてみてください。
つまり、0の場合はN/Aエラーにしてしまうんです。N/Aエラーはグラフに反映されません。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qエクセルで同率の順位の人が表示されない

得点表を元に順位(RANK関数)を出し名前順の表にして、
その順位表を元にVLOOKUP関数で順位順の表を作ってます。
この場合、順位順の表では同順位の人がいた場合、同順位2人目以降の人の名前が表示されません(#N/Aと表示されます)
同位の人も名前と得点をそのまま表示させたいのですが、何か方法は有りませんか?

現在↓

1位 Aさん 10点
2位 Bさん  9点
3位  #N/A  #N/A
4位 Dさん  8点
    ・
    ・
となります。それを

1位 Aさん 10点
2位 Bさん  9点
3位 Cさん  9点
4位 Dさん  8点

としたいです。
左の順位表記は書きこんでいるだけなので変化しません。もちろん順位に連動して変化してほしいですが、このままでも構いません。

Aさん・Bさんの各セルに=VLOOKUP(Q5,$U$4:$V$21,2,FALSE)のように設定しています。
ずいぶん前に本を見ながら設定したもので、理屈は忘れてます・・エクセル2000です。

Aベストアンサー

こんにちは。
Wendy02 です。No.8 に対するコメントです。

他の方の回答を見てはいませんが、どうやら、私のほうは、振り出しです。

その数式をみた限りでは、もう、解答自体はよりも、失礼ですが、これは、基本的な問題ではないかと思いました。直接の解答というよりも、経験者としての回答をさせていただきます。

最初のご質問のようにVLOOKUP を使うことは、間違いないと思います。しかし、その関数を使用する場合は、検索に必要なもの/一意な(ユニークな)データを左端の格子状の1列目に持ってくるということは大前提です。

(もちろん、掲示板レベルで、他のワザをご披露する方もいるようですが、それはそういうテクニックであり、質問本位・データ本位の解答です。しかし、最初から、そういう作りにするのは、通常はありえないのです。)

順位を左端に以って表示するということ自体は問題ではなく、選び出すデータとして必要だということです。誤解なさらないでください。

つまり、以下の場合は、

  Q  R    S
1,名前  得点 順位 ←データの母体(データベース)
2,Aさん 10点  1位 

 変動しやすいもの、計算値は、右側に置きます。
 特定化する(ユニークなもの)は、左端になります。できない場合は、増加する数字でも可能です。

'---------------------------
21,順位 名前  得点  ←表示側は、自由です。
22,1位 Aさん 10点
  ・
  ・
  ・
'-------------------------------

私の前回の式で、VLOOKUPを使い、ユニークなものとして、「名前」を使っていたので、一部の式が完全に使えません。(INDEX関数とMATCH関数を使ってだせますが、最初からは作りません。)

次に、また基本的なことですが、

>=IF(RANK(D12,$S$2:$S$18)=COUNTIF($S$2:$S$18,">=" &D12),RANK(D12,$S$2:$S$18),COUNTIF($S$2:$S$18,">" & D12)+1)
>D12の部分が変わります。→F12,H12,J12・・J38,L38

>D12の部分が変わります。→F12,H12,J12・・J38,L38

 =RANK(数値,範囲)

$S$2:$S$18 の範囲の数値をランキングで出すのが基本です。それを別のところのデータを使うと、万が一には、そのランキングはめちゃめちゃにならないかと思います。

 =RANK(S2,$S$2:$S$18)

あくまでも、範囲の中の数値である必要があると思います。以下の式は、ROW のカッコの中の範囲を変えればよいのですが。

=IF(RANK(S2,$S$2:$S$18)=COUNTIF($S$2:$S$18,">=" &S2),RANK(S2,$S$2:$S$18),COUNTIF($S$2:$S$18,">" & S2)+1)

もしも、元データが点在する場合でも、表に作る場合は、必ず規則性があるはずです。それを、OFFSET 関数やINDIRECT関数によって、ひとつにまとめ合わせることが可能なはずです。

例:
点数が点在している場合のまとめ方
(ただし、実際のデータに当てはめていません)
=INDIRECT(ADDRESS(18+INT(ROW(A1)/6)*10,4+MOD((ROW(A1)-1)*2,8)))

以上が、その元のならびに関するコメントです。
今回、私の回答自体は見送りで構わないのですが、基本的な作りは大事にしたほうがよいですね。

*******

エラー自体については、以下のようにすればよいはずです。ROW($A$2:$A$18)というのは、行データですから、それは、行があっていなくては、取り出せません。

順位 /Q22 ~で、

=INDEX($Q$2:$S$18,MOD(SMALL(INDEX($Q$2:$Q$18+ROW($A$2:$A$18)/100,,),ROW(A1)),1)*100-1,1)

名前  /R22~

=INDEX($Q$2:$S$18,MOD(SMALL(INDEX($Q$2:$Q$18+ROW($A$2:$A$18)/100,,),ROW(B1)),1)*100-1,2)

ここは、VLOOKUPでも可
点数 /S22 ~
=INDEX($Q$2:$S$18,MOD(SMALL(INDEX($Q$2:$Q$18+ROW($A$2:$A$18)/100,,),ROW(C1)),1)*100-1,3)

これは、値コピーして、並べ替えすれば、式はいらないはずですよね。私自身は、あまり難しい式などは使わないのです。手作業で出来る部分は、そのまま手作業で作ります。

こんにちは。
Wendy02 です。No.8 に対するコメントです。

他の方の回答を見てはいませんが、どうやら、私のほうは、振り出しです。

その数式をみた限りでは、もう、解答自体はよりも、失礼ですが、これは、基本的な問題ではないかと思いました。直接の解答というよりも、経験者としての回答をさせていただきます。

最初のご質問のようにVLOOKUP を使うことは、間違いないと思います。しかし、その関数を使用する場合は、検索に必要なもの/一意な(ユニークな)データを左端の格子状の1列目に持ってく...続きを読む

Qエクセルで数式の結果が反映されない(自動計算になっているのに)

すいません、教えてください。

エクセル(XP)で数式が自動計算されなくなって
しまいました。

  ※ツールのオプションはちゃんと自動計算に
   なっているのに全く反映されません。

今まで全く問題なく作業できていたので
原因が分からず困っています。

数式等のエラーだとは考えにくいです。
と言うのも数式のあるセルをダブルクリックして
選択し、そのままEnterキーを押すと計算結果が
反映されます。
ただ、今まで全て自動計算されていたのが
全く動かなくなってしまったんです。

同じようなトラブルを経験された方、又は
詳しい方、どうかよろしくお願いします。

Aベストアンサー

原因は分からずじまいになってしまいましたが
同じことがありました。

「Officeの救急隊」を試してみましょう。
ボタン一発で全ての設定が元に戻ります。
http://www.vector.co.jp/soft/win95/util/se247118.html
(ツールバーなども初期状態に戻ります)

私の場合はコレで直ってしまいました^^

参考URL:http://www.vector.co.jp/soft/win95/util/se247118.html

QエクセルのCOUNTIFが正しくカウントされない原因について

この度はよろしくお願いします
エクセルのCOUNTIFで、例えば列Aに0~9までの数がランダムに入っているとします。それをカウントすると0~4まではきちんとカウントするのですが、5~9までのカウント数が0になってしまいます。実際には5~9までの数も含まれているのですが、このようになってしまう原因は何でしょうか?
よろしくお願いします。

Aベストアンサー

同じ半角の5に見えていても、数値扱いと文字扱いになっている場合があります
COUNTIFを使う前に、VALUEで数値に統一してみて下さい

Qデータが重複データの扱い(対処方法) RANK・MATCH・INDEX

ずばりこんなデータから、順位とその人の名前を出す。

1)重複した場合、RANKは、同じ位置して、次の番は、欠としている。
  から、下記のような順位になると思われる。

 氏名 点数 順位
 鈴木 700 5
 斉藤 415 8 
 菅野 700 5
 赤井 780 4
 田村 900 2
 池田 620 7 
 楽谷 900 2
 金田 940 1

 ★問題なのが、同じランクになった人の名前をちゃんと表示したい。
  1位からの点数を表示するのは、LARGE関数でできるんだけど、
  同じランクになっている人が、別々に出てこない。
  とても安易な方法だと思ったんですが、
  検索する範囲(表の行番号)をMATCH関数でもとめておく
  点数をつかうので、当然同じ点数には、同じ行がはいる(上から
  順番だから、1行目と3行目に同じ点数なら、1(順位)が連続する)
  それで、その番号を使いVLOOKUP関数で、名前を拾ってくる。
  其の時、自分で同じ番号のところを修正しておく(1と3にする)
  そうすれば、名前がちゃんと出てくる。
  でも、其のセルには、数式がなくなる。

  ⇒VBAや、難しい関数が使えないと、これが限界なのか。。
   参考にさせてもらうものもみたんですが、
   なかなか・・この苦肉の策でもヨシと思っていいのか・・
   ちょっと自信なくて、、
  
 
 ベスト8(ランクごとに返す)
    点数 氏名 番号
 1位 ヾ  ヾ  
 2位 ヾ  ヾ
 2位 ヾ  ヾ
 4位 ヾ  ヾ
 5位 ヾ  ヾ
 5位 ヾ  ヾ
 7位 ヾ  ヾ
 8位 ヾ  ヾ
   

ずばりこんなデータから、順位とその人の名前を出す。

1)重複した場合、RANKは、同じ位置して、次の番は、欠としている。
  から、下記のような順位になると思われる。

 氏名 点数 順位
 鈴木 700 5
 斉藤 415 8 
 菅野 700 5
 赤井 780 4
 田村 900 2
 池田 620 7 
 楽谷 900 2
 金田 940 1

 ★問題なのが、同じランクになった人の名前をちゃんと表示したい。
  1位からの点数を表示するのは、LARGE関数でできるんだけど、
  同じランクになっている人...続きを読む

Aベストアンサー

こんばんは。

関数で作る場合です。

データが、A1 ~C9 までとしで、

D列~F列に表示しなおすとして、

 D列  E列  F列 
順位  点数  氏名
1位 
2位 
2位 
4位 
5位 
5位 
7位 
8位 

E列
E2 は、
=LARGE($B$2:$B$9,ROW(A1))
フィルダウン・コピーします。

D列は、
D2~
=JIS(RANK(E2,$B$2:$B$9))&"位"

を入れて、フィルダウンコピーします。
(JISは、全角にする関数です。)

F列は、
F2~

=INDEX($A$1:$B$9,MOD(LARGE($B$2:$B$9+ROW($A$2:$B$9)/100,ROW(A1)),1)*100,)

配列数式ですから、一旦式を入力したら、目的の式にF2を押して、『ShiftとCtrlを押しながらEnterキー』を押して、式を配列数式に変換させます。

それから、フィルダウン・コピーします。

これで、出来たかと思います。

こんばんは。

関数で作る場合です。

データが、A1 ~C9 までとしで、

D列~F列に表示しなおすとして、

 D列  E列  F列 
順位  点数  氏名
1位 
2位 
2位 
4位 
5位 
5位 
7位 
8位 

E列
E2 は、
=LARGE($B$2:$B$9,ROW(A1))
フィルダウン・コピーします。

D列は、
D2~
=JIS(RANK(E2,$B$2:$B$9))&"位"

を入れて、フィルダウンコピーします。
(JISは、全角にする関数です。)

F列は、
F2~

=INDEX($A$1:$B$9,MOD(LARGE($B$2:$B$9+ROW($A$2:$B...続きを読む

Qエクセルの関数が計算されない

普通のSUM関数の結果が 0 になってきます。
表示を数値にしても変わりません。
他に何か設定する方法があるのでしょうか?
自分で作成したファイルではないので属性が分かりません。
困っています。よろしくお願いいたします。

Aベストアンサー

SUM関数の対象セルが文字列になってる場合が考えられますので、次の方法をお試しください。
(1)空きセルに数値の1を設定
(2)空きセルをコピー
(3)SUM関数対象のセル範囲を選択→右クリック
(4)形式選択して貼り付け→乗算にチェック→OK

Q複数のエクセルファイルからデータ抽出とまとめる方法について。

500のエクセルファイルがあり、それぞれのエクセルデータのA2からF2までのデータのをまとめた一覧表(1行目は、1枚目のエクセルファイルのA2-F2、2行目は2枚目のエクセルファイルの・・・、という感じでです)のを、新しいエクセルファイルもしくはテキストなどにでも手早く作れる方法をご存知の方、ご教授ください。コピペでやっていますが嫌になってしまいました。。マクロも触っては見たのですが、2枚目のエクセルファイルを2行目に、3枚目のエクセルファイルを3行目になどの方法の解決は思いつかず、挫折しました。よろしくお願いいたします

Aベストアンサー

対象のフォルダをcドライブの「sample」とした場合で回答します。
新規エクセルブックのシート名タブを右クリックし「コードの表示」
右側のエディタエリアに下記コードを貼り付け、実行して下さい。
G列にファイル名が入るようになっています。不要であれば
Cells(rIdx, 7).Value = fName
を削除して下さい。


Sub getA_F()
Const myPath As String = "c:\sample\"
Dim rIdx As Long
Dim fName As String
fName = Dir(myPath & "*.xls")
Do Until fName = ""
Workbooks.Open Filename:=myPath & fName
rIdx = rIdx + 1
Me.Range(Cells(rIdx, 1), Cells(rIdx, 6)).Value = ActiveSheet.Range("A2:F2").Value
Cells(rIdx, 7).Value = fName
Windows(fName).Close
fName = Dir
Loop
End Sub

対象のフォルダをcドライブの「sample」とした場合で回答します。
新規エクセルブックのシート名タブを右クリックし「コードの表示」
右側のエディタエリアに下記コードを貼り付け、実行して下さい。
G列にファイル名が入るようになっています。不要であれば
Cells(rIdx, 7).Value = fName
を削除して下さい。


Sub getA_F()
Const myPath As String = "c:\sample\"
Dim rIdx As Long
Dim fName As String
fName = Dir(myPath & "*.xls")
Do Until fName = ""
Workbooks.Open ...続きを読む


人気Q&Aランキング