みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

再び質問。エクセルで集計。

昨日、「エクセルまたは他のフリーソフトで集計したいです。」

と質問をして、ベストアンサーさんから教えて頂いた下記の方法で、
自宅パソコンのWindows 7のエクセルでは出来ました。
そのデーターを会社のWindows XPのエクセル2000で開くと、
シート2の名前が表記されるところに「#NAME?」となってしまいました。

私が最初質問した時にWindows 7と書いたので、それに沿って教えて
頂いたのだと思います。

最近のエクセルでしかできない事なのでしょうか?
それともどこかを変更すると同じ事ができるのでしょうか?

エクセル初心者でわからない事だらけです。
教えて下さい!よろしくお願い致します。

ベストアンサーの方の回答↓
-----------------------------------------------------------

シート1は元の表でお求めの表をシート2に作るとします。
シート1ではB1セルからH1セルにかけて月から日まで入力します。
氏名はA2セルから下方にあるとします。(1),(2),(3)の選択種がBからH列の2行目以降にに入力されるとします。
J列からP列を作業列として、J2セルには次の式を入力してP2セルまでドラッグコピーしたのちに下方にもドラッグコピーします。

=IF(OR($A2="",B$1="",B2=""),"",B$1&B2&(COUNTIF(B$1:B1,B2)+1))

シート2に移ってA1セルから3行おきに月(A1セル)、火(A4セル)、水(A7セル)・・とA19セルまで入力します。
B1セルからB3セルまでに(1),(2),(3)を入力してそれを下方に繰り返し表示させます。
C1セルには次の式を入力して横方向にドラッグコピーしたのちに下方にもドラッグコピーします。

=IFERROR(INDEX(Sheet1!$A:$A,MATCH(INDEX($A:$A,ROUNDUP(ROW(A1)/3,0)*3-2)&$B1&COLUMN(A1),INDEX(Sheet1!$J:$P,1,ROUNDUP(ROW(A1)/3,0)):INDEX(Sheet1!$J:$P,10000,ROUNDUP(ROW(A1)/3,0)),0)),"")

投稿日時 - 2012-11-06 17:20:43

QNo.7784714

困ってます

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

古いエクセルのバージョンではシート2のC1セルに入力する式は次のようにします。

=IF(ISERROR(INDEX(Sheet1!$A:$A,MATCH(INDEX($A:$A,ROUNDUP(ROW(A1)/3,0)*3-2)&$B1&COLUMN(A1),INDEX(Sheet1!$J:$P,1,ROUNDUP(ROW(A1)/3,0)):INDEX(Sheet1!$J:$P,10000,ROUNDUP(ROW(A1)/3,0)),0))),"",INDEX(Sheet1!$A:$A,MATCH(INDEX($A:$A,ROUNDUP(ROW(A1)/3,0)*3-2)&$B1&COLUMN(A1),INDEX(Sheet1!$J:$P,1,ROUNDUP(ROW(A1)/3,0)):INDEX(Sheet1!$J:$P,10000,ROUNDUP(ROW(A1)/3,0)),0)))

投稿日時 - 2012-11-06 18:03:45

お礼

KURUMITOさん!!!昨日に引き続き、お世話になっております。
家の古いパソコン(バージョンの古いエクセル)を開いて、昨日作ったデータに
上記の式を入れてみました!出来ました!名前出てきました!
これで、会社でも使えそうです。本当に助かりました。ありがとうございました。

投稿日時 - 2012-11-06 23:45:07

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

こんばんは!
横からお邪魔します。

↓の画像のようにSheet1のデータをSheet2に表示するようにしてみました。
Sheet2のA・B列項目は入力済みだとします。
配列数式を使っていますので、極端にデータ量が多い場合はオススメできませんが、
データ量はあまり多くないというコトみたいですので・・・
とりあえずSheet1の100行目まで対応できる数式にしてみました。

Sheet2のC1セルに
=IF(COUNTIF(OFFSET(Sheet1!$A$1:$A$100,,INT(ROW(A3)/3),,1),$B1)<COLUMN(A1),"",INDEX(Sheet1!$A$1:$A$100,SMALL(IF(INDEX(Sheet1!$B$1:$H$100,,INT(ROW(A3)/3))=$B1,ROW($A$1:$A$100)),COLUMN(A1))))

これは配列数式になってしまいますので、Shift+Ctrl+Enterで確定!

この画面からコピー&ペーストする場合はC1セルに貼り付け後、数式バー内で一度クリック!
編集可能になりますので、そのまま
Shift+Ctrlキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り配列数式になります。

これを列方向・行方向にオートフィルでコピーすると
画像のような感じになります。

他の方の配置と違っていたらごめんなさいね。m(_ _)m

投稿日時 - 2012-11-06 20:59:40

お礼

画像つきでわかりやすく説明して頂き、ありがとうございました。
やりたかった配置と同じ形です。
このサイトで親切な方にお会いでき、わかりやすく教えて頂いて感動です。

投稿日時 - 2012-11-06 23:31:49

ANo.2

あたり~、IFERROR、こいつはウチにもありまヘン、、、
=IFERROR(??,X)
これは、
=IF(ISERROR(??),X,??))
に置き換え可能。

投稿日時 - 2012-11-06 17:55:01

お礼

ありがとうございました。直感はズレてはなかったようです。
もっと勉強して使いこなせるようがんばります。

投稿日時 - 2012-11-06 23:35:32

ANo.1

上記の式で式の最初にある
IFERROR関数はEXCEL2007から利用できるようになった関数です。
EXCEL2000では対応していません。

投稿日時 - 2012-11-06 17:40:48

お礼

早々の回答をありがとうございます。
日々、進化ですね。

投稿日時 - 2012-11-06 23:38:49

あなたにオススメの質問