• 締切済み

縦に並んでいるデータを横並びに変えたい

お世話になっております。エクセルの表で縦に並んでいる数字を横にしたいのです。添付の左の表のシートを参照して右の表に変更したいと思っているのですがどなたかご教授いただけませんでしょうか。エクセルは2010です。

みんなの回答

  • SI299792
  • ベストアンサー率47% (774/1618)
回答No.6

多分、 E2: =IF(COUNTIF(B$2:B2,B2)=1,SUMIF(B:B,B2,D:D),"") が入っていると思うので、これを利用します。 F列が空いているのでワークエリアに使います。フォントの色を白にすると見えなくなります。 F2: =F1+(E2<>"") 下へコピペ。 H2: =IFERROR(INDEX(B:B,MATCH(ROW()-1,F:F,0)),"") I2: =SUMIFS($D:$D,$B:$B,$H2,$C:$C,I$1) J2へコピペ。 F2,H2,I2を下へコピペ。

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.5

[No.4補足]へのコメント、 》 簡単そうでよさそうに見えました “よさそうに”だけ、でしたか? 》 満足な結果が得られませんでした 斯樣な抽象的な表現でなく、だう云ふエラーになったとか具體的に仰ってェ~m(_._)m 明記していた 範圍 A1:E8 を選擇⇒Alt+MC⇒“上端行”だけにチェック入れ を先ず實行していましたか? 「Alt+MC」の意味は、次の通りです。 [数式](forMulas)⇒[選択範囲から作成](Create from selection)

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.4

範圍 A1:E8 を選擇⇒Alt+MC⇒“上端行”だけにチェック入れ⇒ 式 =SUMIFS(金額,得意,$H2,税率,I$1) を入力したセル I2 を 右隣&下3行にオートフィル オ・シ・マ・イ

gaaze
質問者

補足

ありがとうございます。 簡単そうでよさそうに見えましたが 左の表の得意先名・金額・税率の並びが不規則な位置にあるので、ご教授いただいた数式をコピーしても満足な結果が得られませんでした。。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

これは、エクセルの「シートデータの組換え」問題に当たると思います。 >質問の表現「縦に並んでいるデータを横並びに変えたい」、では正確に表現できないものです。 (これにぴったりの課題は、形式を選択しての、コピー貼り付けで、「行と列を入れ替える」、があるが 似ても似つかぬものです。) 「データの組換え」はエクセル関数では、扱いづらい型の課題だと思います。 仕事にエクセルを使うなら、いろんな場面で、VBAの利用は必須だと思います。勉強してください。 ーー 泥臭いですが、下記に一例を上げます。 例データ シートSheet1のA1:D7に NO 得意先名 税率 金額 請求額 1 山本商店 軽8% 250 1450 2 山本商店 10% 1200 3 藤田商店 軽8% 850 850 4 小田商店 軽8% 600 1600 5 小田商店 10% 1000 6 田中商事 10% 2600 2600 標準モジュールに Sub test01() Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") lr = sh1.Range("B10000").End(xlUp).Row 'MsgBox lr '--- For i = 2 To lr sn = sh1.Cells(i, "B") '社名 Set fnd = sh2.Range("B2:B10000").Find(sn) If fnd Is Nothing Then '社名見つからない r = sh2.Range("B10000").End(xlUp).Row sh2.Cells(r + 1, "B") = sn '社名セット If sh1.Cells(i, "C") = "軽8%" Then '--8% sh2.Cells(r + 1, "C") = sh1.Cells(i, "D") Else '--10% sh2.Cells(r + 1, "D") = sh1.Cells(i, "D") End If Else '社名見つかった rf = fnd.Row If sh1.Cells(i, "C") = "軽8%" Then '--8% sh2.Cells(rf, "C") = sh1.Cells(i, "D") Else '--10% sh2.Cells(rf, "D") = sh1.Cells(i, "D") End If End If Next i End Sub ーー 「社名」の表現や、「軽8%」の部分について、シートのデータの文字の半角・全角やスペースの有無などと、プロクラムコードのその部分を、統一することに留意してください.これらがバラバラだと結果はむちゃくちゃになります。 ーー 結果 Sheet2のB1:D5に結果 得意先名 税率8%金額 税率10%金額 山本商店 250  1200 藤田商店 850 小田商店 600  1000 田中商事  2600 == 質問者が、先行のご回答の補足で書いている、いろいろデータの統一についても、VBAでやらないとむつかしいでしょう。 200件程度というのが、手作業でやれる限界かと思うので、かえって悩ましい。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

> 別々のセルに分ければ使えそうなのですが、どのようにすればよいでしょうか。 データの区切り位置を使って2つのセルに分けてください。スペースが前後に残るようでしたらTRIM関数でスペースを削除してください。TRIM関数で削除したデータをコピーし「形式を選択して貼り付け」の「値」で貼り付けてください。 全角を半角に統一するには C2を半角にしたい場合はたとえばD2に =ASC(C2) とすれば半角になります。下に200行あるのでしたらD2をそのまま下にコピーしてください。 最後に200行すべて選択してコピーし、選択したまま「形式を選択して貼り付け」で「値」で貼り付けてからC列を削除します。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

I2に =SUMPRODUCT(($B$2:$B$7=$H2)*($C$2:$C$7=I$1)*($D$2:$D$7)) として右と下にコピーして試してみてください。

gaaze
質問者

補足

ありがとうございます。 さらに発展して教えていただけますでしょうか。 実は、この左の表のたとえばB2「山本商店」、C2「軽8%」は一つのセル(B2)に「山本商店 軽8%」となっています。 教えていただいたやり方で使いたいのなら別々のセルに分ければ使えそうなのですが、どのようにすればよいでしょうか。左の表の6行が実際には200行くらいありますが、さらに実際はこの軽8%の「8」や「%」が「8」や「%」など、半角・全角が混じっておりまして。 最悪、手作業で修正しないといけないかもしれませんが。 すみません、宜しくお願い致します。

関連するQ&A