人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

再質問です。よく内容を読んでお答え頂きますよう宜しくお願いします。
【エクセル】エクセル2003で下記内容を計算させる方法を教えて下さい。よろしくお願い致します。

A----B----C----A`----`B`----C`
山田---10---5---山田----10----11
鈴木---10---5---山田----22----6
伊藤---20---4---伊藤----20----4
川上---15---4---伊藤----10----8
伊藤---10---8---川上----15----12
山田---10---6---鈴木----10----5
山田---22---6
川上---15---8

上記内容で
1.Aの中に「同じ文字」があり、Bも「同じ数値」の場合はCの数字を合計してA‘、B‘、C‘のセルに表示
2.Aの中に「同じ文字」があり、Bは「違う数値」の場合はCの数字を個別に表示
3.Aの中に「違う文字」があり、Bは「同じ数値」の場合はCの数字を個別に表示
4.Aの中は「文字」です!数値ではありません。しかも文字には規則性がなくランダムに続きます
5.例文は8行ですが複数行続きます

●質問者: go4649
●カテゴリ:コンピュータ 生活
✍キーワード:エクセル セル ランダム 伊藤 山田
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● ootatmt
●20ポイント

http://www.atmarkit.co.jp/fwin2k/win2ktips/359pivot/pivot.html

@IT:Windows TIPS -- Tips:ピボットテーブルでクロス集計を行う

ピボットテーブルを使えば一発です。


A,B,Cの先頭に行の名前をつけておいて、

ピボットテーブルのデータ範囲を $A:$C にして、

行のフィールドに A をドラッグ

列のフィールドに B をドラッグ

データアイテムに C をドラッグすれば

クロス集計できます。

◎質問者からの返答

関数を使用して行いたいのです


2 ● Baku7770
●20ポイント

http://homepage1.nifty.com/kenzo30/ex_kisotoku/ex_ks_tokubetu9_1...

まず、集計用のデータを抽出します。


質問文でA’,B’の列にあるデータです。

「データ」→「フィルタオプション」で

指定した範囲をオン

リスト範囲$A$1:$A$8

検索条件範囲$A$9:$B$9

抽出範囲$A$10:$A$16

重複するレコードは無視するにチェックを入れる


で抽出されます。もしAに数字が入っているのを無視したいのなら、D列に=IF(ISTEXT(A1),”○”,”×”)としてフィルタで抽出する際に除くようにします。B列が数字かどうかもチェックしたければ、ISNUMBER関数を使って同様に除くこともできます。


抽出したデータを所定の位置に貼り付けます。


C列の前に1つ列を挿入し、A1&B1で質問文であれば「山田10」というデータを作り、全行に複写します。


C’にも一端同じようにします。で、D’1に=SUMIF($C$1:$D$10,$C’$1,$D$1:$D$8)で入れると1件の場合はそのままの値が計算できますし、複数件の場合はその合計が計算されます。


文字が入っているかをチェックしたければ先程の○×も条件に加えれば可能です。

◎質問者からの返答

関数で行いたいのです


3 ● takomaro
●20ポイント

http://www.hatena.ne.jp/1

人力検索はてな

やはり複数行あったんですね。(^^;)

マクロで処理するしかないでしょう。

以下の手順で

?名前がランダムでとありますが一応戻せるようにA列に追加し行番号を追加(Data数分)。

例)

1--山田--10

2--鈴木--10

3--伊藤--20


?「データ(D)」-「並べ替え(S)」で

「優先されるキー」を「列2」

「2番目に優先されるキー」を「列3」としてソート

例)

5--伊藤--10

3--伊藤--20

1--山田--10


?以下のマクロを実行します。


Dim Xbef, Ybef, Xaft, Yaft, I

Sub Macro1()

Xbef = 2: Ybef = 1 ’元データの座標

Xaft = 6: Yaft = 1 ’抽出先の座標

Cells(Ybef, Xbef).Select

For I = 0 To 2 ’データの1つ目は複写

Cells(Yaft, Xaft + I) = Cells(Ybef, Xbef + I)

Next I

Ybef = Ybef + 1

’2つ目以降

Do Until Cells(Ybef, Xbef) = ””

Cells(Ybef, Xbef).Select

’列2と列3を比較

If Cells(Ybef, Xbef) = Cells(Yaft, Xaft) And Cells(Ybef, Xbef + 1) = Cells(Yaft, Xaft + 1) Then

Cells(Yaft, Xaft + 2) = Cells(Yaft, Xaft + 2) + Cells(Ybef, Xbef + 2)

Else

Yaft = Yaft + 1

For I = 0 To 2

Cells(Yaft, Xaft + I) = Cells(Ybef, Xbef + I)

Next I

End If

Ybef = Ybef + 1

Loop

End Sub

◎質問者からの返答

マクロなどではなく関数では無理でしょうか・・・?

もっと簡単にできないでしょうか?

再々質問するしかないですね・・・

質問内容をもっと細かく書きます

私の質問の仕方が悪いのでしょうか・・・

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ