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

エクセルの計算式及びその応用について教えてください。
A data1
A data2
A data3
B data1
B data3
C data2
C data4
C data5
と、データがあるとします。(スペースで分けてあるものは別のセルです。)
このデータを計算式と貼り付けをして、下記のようなデータにしたいのです。
データ量は膨大なため、出来る限りそれぞれ一括でできる方法をお教え頂けますと幸いです。
A data1:data2:data3
B data1:data3
C data2:data4:data5

先日エクセルについて教えて頂いたのがとても参考になりましたので、
エクセルに詳しい方、もし可能でしたらお教え頂けますと幸いです。
説明に時間もかかると思いますので、ポイントは多めで考えています。よろしくお願いいたします。


●質問者: derkrebs
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:エクセル セル データ ポイント 計算
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● きゃづみぃ
●100ポイント

Aの場合

A data2

A data3

の dataの部分をコピーして

A data1の次のセルに 右クリックして

形式を選択して貼り付け、

行列を入れ替える にチェックを入れて OKとします。

で 不要になった

A data2

A data3

の部分を削除すればいいでしょう。

ちょっと大変ですが、これを 繰り返していけばいいでしょう。

http://q.hatena.ne.jp/answer

◎質問者からの返答

ありがとうございます。それと似たようなことを繰り返していたら

1時間後には半泣きでした。


2 ● SALINGER
●450ポイント ベストアンサー

VBAは使えますでしょうか。


VBAとはなんぞやという場合はこちらを参考に挑戦してみてください。

http://www.officepro.jp/excelvba/ini/index1.html

http://www.officepro.jp/excelvba/ini/index2.html

http://www.officepro.jp/excelvba/ini/index3.html


以下のコードは、Sheet1の左上詰めにあるデータを変換してSheet2に表示するマクロです。

標準モジュールを追加してコピペして実行してみてください。

Sub Macro()
 Dim i As Long
 Dim j As Long
 Dim lastRow1 As Long
 Dim lastRow2 As Long
 Dim str1 As String
 Dim str2 As String
 Dim f As Boolean
 
  'シート1の最終行の取得
 lastRow1 = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
 
  'ここのSheet2を変更することで結果を別の名前のシートにすることができます。
 With Worksheets("Sheet2")
 
  'シート1を1行目から最終行までループ
 For i = 1 To lastRow1
 
  'str1にA列、str2にB列を代入
 str1 = Worksheets("Sheet1").Cells(i, 1).Value
 str2 = Worksheets("Sheet1").Cells(i, 2).Value
 f = False
 
  '最初のデータはそのまま書き込み
 If .Cells(1, 1).Value <> "" Then
 
  'シート2の最終行の取得
 lastRow2 = .Cells(Rows.Count, 1).End(xlUp).Row
 
  'シート2をループ
 For j = 1 To lastRow2
 
  'A列と同じデータがあれば書き込み
 If .Cells(j, 1).Value = str1 Then
 .Cells(j, 2).Value = .Cells(j, 2).Value & ":" & str2
 f = True
 Exit For
 End If
 Next j
 End If
 
  '同じデータが無かった場合f=False
 If f = False Then
 .Cells(lastRow2 + 1, 1).Value = str1
 .Cells(lastRow2 + 1, 2).Value = str2
 End If
 Next i
 End With
End Sub

わからないことがあればコメント欄で対応します。

◎質問者からの返答

とても難しい内容ですが、がんばって理解してみようと思います。ありがとうございました。


3 ● jccrh1
●450ポイント

マクロを使用しないと難しいと思います。

次の条件でマクロを作成してみました。

・Sheet1のA1?Bnに集計したいデータ

・Sheet2のA1?Bnに集計した結果

並べ替えや列幅を自動設定しています。

Sub 集計処理()
 Set グループ = CreateObject("Scripting.Dictionary")
 
 ' Sheet1を集計
 Set 集計範囲 = Sheets("Sheet1").UsedRange
 For I = 1 To 集計範囲.Rows.Count
 Key = 集計範囲(I, 1).Value
 DATA = 集計範囲(I, 2).Value
 If グループ.Exists(Key) Then
 グループ(Key) = グループ(Key) & ":" & DATA
 Else
 グループ(Key) = DATA
 End If
 Next I
 
 ' Sheet2に出力
 Sheets("Sheet2").Select
 Cells.Clear
 Keys = グループ.Keys
 For I = 0 To グループ.Count - 1
 Cells(I + 1, 1) = Keys(I)
 Cells(I + 1, 2) = グループ(Keys(I))
 Next I
 Cells.EntireColumn.AutoFit
 Cells.Sort Key1:=Range("A1")
End Sub

ダミーURL:http://q.hatena.ne.jp/1245050304

◎質問者からの返答

ありがとうございます。マクロについては勉強が足りず、詳しくはわかりませんが、お二人から頂いたご意見を参考に

いろいろと挑戦してみようと思います。

関連質問


●質問をもっと探す●



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