一回も披露したことのない豆知識

excelにて、以下の処理をしたいと思っています。

  A   B C D
1 aさん ○
2 aさん   ○
3 aさん     ○

↓(射影?)

  A   B C D
1 aさん ○ ○ ○

こんな感じです。
aさんを1つにまとめたいのです。
できれば、新しいシートに結果を出力したいのですが。

宜しくお願いします。

A 回答 (4件)

ピボットテーブルでも代用できそうです。


数字になちゃいますが。
下記ではOKWEBで位置がずれるでしょうが、実際やって
みてください
(データ例)
A列   B列   C列    D列
xyzu
a○ (yのみ)
a○ (zのみ)
a○○ (y、u)
b○ (yのみ)
b○ (zのみ)

c
c○○(y、u)
(操作)
データ
ピヴォットテーブル・・
次へ
次へ
次へ
レイアウト
「行」へ「X」をD&D(ドラッグアンドドロップ)
「データ」へ「y」をD&D,「z」をD&D、「u」をD&D
OK
完了
表が出る
表のXで右クリック
レポートの書式設定
下のほうの「テーブル10」をダブルクリック
(テーブル11,12も試してください)
(結果)
xデータの個数 : yデータの個数 : zデータの個数 : u
a211
b11
c11
総計422
    • good
    • 1

   A   B  C  D


1 aさん  ○
2 aさん     ○
3 aさん        ○
4 bさん     ○
5 bさん        ○
6 cさん     ○

aさんだけでなく、bさん、cさんもいるんでしょうか。上のような表を想定します。

統合機能を使います。新しいシートのA1セルを選択して、

データ→統合の統合の設定ダイアログで、
  1.集計の方法を『データの個数』
  2.統合元範囲でデータのあるシートのA1:D6を選択。
    細くなっている統合の設定-統合元範囲ダイアログの右のボタンを押して
    統合の設定ダイアログに戻る。
  3.追加をクリック
  4.統合の基準の『左端列』をチェック
  5.OK


   A   B  C  D
1 aさん  1  1  1
2 bさん     1  1
3 cさん     1   

の表ができます。(実際の表の『1』は半角です)
編集→置換で『1』を『○』に置き換えます。

これでできていると思います。
    • good
    • 0

配列数式とかは、慣れるまでは、理解が難しいかも知れない、かといってVBAも慣れるまでは同じかも知れませんが


一応上げて見ます。FOR NEXTロジックだけの幼稚なものですが。少数データでテスト済み。
Sub proj01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
'----最下行を探す
d = sh1.Range("a1").CurrentRegion.Rows.Count
k = 1
'---見だし部分第1行にシート1からシート2へセット
For i = 1 To 4
sh2.Cells(1, i) = sh1.Cells(1, i)
Next i
'------シート1、2行目から最下行まで繰り返し
For i = 2 To d
'----シート2のリストに既登録の名前がないか探す
For j = 1 To k
If sh1.Cells(i, "A") = sh2.Cells(j, "A") Then
'---シート1のこの行をシート2で見つかった行へ射影化
If sh1.Cells(i, "B") = "○" Then sh2.Cells(j, "B") = "○"
If sh1.Cells(i, "C") = "○" Then sh2.Cells(j, "C") = "○"
If sh1.Cells(i, "D") = "○" Then sh2.Cells(j, "D") = "○"
GoTo p01
End If
Next j
'---既登録のリストに無ければ最下行次行へ追加登録
k = k + 1
'---シート1のこの行をシート2の追加行へ射影化
sh2.Cells(k, "A") = sh1.Cells(i, "A")
If sh1.Cells(i, "B") = "○" Then sh2.Cells(k, "B") = "○"
If sh1.Cells(i, "C") = "○" Then sh2.Cells(k, "C") = "○"
If sh1.Cells(i, "D") = "○" Then sh2.Cells(k, "D") = "○"
p01:
Next i
End Sub
    • good
    • 0

配列数式を使って解いてみます。


元のデータがSheet1にあるとします。

別のシートのB列の任意のセルに次の式を貼り付けてください。

=IF(SUM(IF(Sheet1!B$1:B$3="○",1)*IF("aさん"=Sheet1!$A$1:$A$3,1))=1,"○","")

貼り付けたら、[Enter]を押す代わりに[Shifte]と[Ctrl]を押しながら[Enter]を押してください。数式バーに次のように表示されれば成功です。

{=IF(SUM(IF(Sheet1!B$1:B$3="○",1)*IF("aさん"=Sheet1!$A$1:$A$3,1))=1,"○","")}

あとは、数式の入ったセルをC列とD列にコピーしてください。

お役に立ちましたでしょうか?
    • good
    • 0

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


おすすめ情報