• ベストアンサー

一行に複数の情報があるものを規則に則り合計重量を算出させたい

いつもお世話になっております。今回、かなり頭を悩ませてしまうような問題に直面してしまいました。 どなたかお手すきの方、いらっしゃいましたらどうぞご教授願います。尚、環境はエクセル2000です。  Day  No.  Name-1  g-1  Name-2  g-2  Name-3  g-3  .... Name-10  g-10 1  9/15  Z12345-69  りんご  150  -   -  みかん  150   .... いちご   100 2  10/20  Y26559-72  すいか  250  りんご  130  みかん  100  .... いちご  200 | 135  12/6  U26895-29  -   -  いちご  130  洋なし  100  .... みかん  200 1行に最大10種類の果物名があり、重さがgで入力されています。時折ブランク(上記では“-”で表記)もあり、必ず左セルから綺麗に埋まっているわけではありません。このような状態で下記の事を行いたいのです。 (1)例えば…上記1行目に記載されている全てのものを       9/15 Z12345-69 りんご 150       9/15 Z12345-69 みかん 150       9/15 Z12345-69 いちご 100    2行目は       10/20 Y26559-72 すいか 250       10/20 Y26559-72 りんご 130       10/20 Y26559-72 みかん 100      10/20 Y26559-72 いちご 200    と表記する。 (2)最終的な目的は、それぞれの果物の合計重量を計算させたい。もし、これが上記のようにわざわざ一行ずつに並べなくても計算できるのでしたら、そのような方法でも構わない。 ピボットテーブルを使うには(1)の作業が必要?と思ったから記載しましたが(2)が出来れば特に必要ではありません。尚、アクセスと併用しても構いません。

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

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

・多分VBAでないと出来ないと言う感じがします。 ・しかし現状のシートへの入力状態が、上の表現では、私には、伝わらないです。セルの行と列を明確に記して補足してみてもらえませんか。 ・たとえばA1セルの値はどうなってますか。 ・Day  No.  Name-1は別列の3列に入っているのですか ・これらは項目見出しですか ・1行目の値は、上記ではどこまでですか A列から第22列までデータあり A列日付 B列何かの番号 C-第22列=果物と数量のペアーで、右方向に10ペア入力あり これを 日付-番号-果物-数量 を1行の組みにしたいと言うことでしょうか。 すると (1)例えば…上記1行目に記載されている全てのものを       9/15 Z12345-69 りんご 150       9/15 Z12345-69 みかん 150       9/15 Z12345-69 いちご 100 のところは10行になるのですね。NAME-10とあるから。 私の理解で良ければ VBAでは Sub teat01() Dim sh1, sh2 As Worksheet Set sh1 = Worksheets("sheet1") Set sh2 = Worksheets("sheet2") d = sh1.Range("A1").CurrentRegion.Rows.Count k = 2 For i = 2 To d For j = 3 To 30 Step 2 If sh1.Cells(i, j) = "" Then Exit For Else sh2.Cells(k, "A") = sh1.Cells(i, "A") sh2.Cells(k, "B") = sh1.Cells(i, "B") sh2.Cells(k, "C") = sh1.Cells(i, j) sh2.Cells(k, "D") = sh1.Cells(i, j + 1) k = k + 1 End If Next j Next i End Sub ご質問者が実際に合わせて修正できるかどうか。

choko_late
質問者

補足

こんばんは。早速のご回答、有難うございます。そして仕事で残業続きの上、職場からネットへの接続が出来ない為、このような時間になってしまいますがどうぞ宜しくお願い致します。 >現状のシートへの入力状態が、上の表現では、私には、伝わらないです。 ◆申し訳ございませんでした。これ以上、詳細を書くと文字数オーバーで投稿出来なかった為、罫線などを入れる事が出来ず、見づらくなってしまったかと存じます。 >セルの行と列を明確に記して補足してみてもらえませんか。 ◆A1セル→Day/B1セル→No./C1セル→Name-1/D1セル→g-1/E1セル→Name-2/F1セル→g-2/G1セル→Name-3/H1セル→g-3 のようになっておりまして、最大でName-10まであります。(このName-10に対する重量を入力するセル“g-10”が一番最後になります) >これらは項目見出しですか ◆はい、そうです。DayやNo.などは全て項目見出しとなります。 >1行目の値は、上記ではどこまでですか ◆Vまでです。(V1セルに入る項目見出し名は“g-10”となります) >A列日付 B列何かの番号 ~中略~ を1行の組みにしたいと言うことでしょうか。 ◆はい、その通りでございます。 >(1)例えば…上記1行目に記載されている ~中略~ NAME-10とあるから。 ◆はい、おっしゃる通りです。 VBAを使用しなくてはならないのですね。これは全くやった事が無い為、お教え戴きました記述をどこに記載すべきか、という所から勉強しなくてはなりませんね。週末を利用して本など購入して、まず基本を学んでみます。有難うございました!

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

こんにちは。maruru01です。 (2)の最終的な目的というのが、日付・No.に関係なく1~135行の全データでの、果物ごとの合計ということなら、 =SUMPRODUCT((C1:U135="りんご")*1,D1:V135) です。 これに、No.ごとの条件も付けるなら、 =SUMPRODUCT((C1:U135="りんご")*(B1:B135="Z12345-69"),D1:V135) という感じになります。 ところで、No.2の方の1つ目と2つ目の数式は、エラーになると思います。

choko_late
質問者

お礼

こんばんは。早速のご回答、有難うございました。そして、仕事が残業続きの上に職場からネットへの接続が出来ない為、このような時間になってしまいました事、お詫び致します。 >(2)の最終的な目的というのが、日付・No.に関係なく1~135行の全データでの、果物ごとの合計ということなら、 ◆実は当初は説明させて頂きました通り、(2)の最終的な目的のみ実行すれば良いという事だったのですが、質問に記載しました(1)のようなデータも別シートに表記しなくてはならなくなってしまいました。。。。 今、実際にデータを動かしてみたのですが。。。結果がどうも違うような…。恐らく私のミスだと思います。今日はもう就寝しなくてはならない時間なので明日の夜、再度、帰宅してから自宅で挑戦してみようと思っております。

すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

4列目から2列おきに合計でいいのでしょうか? 列位置をCOLUMNで出す方法 =SUMPRODUCT((MOD(COLUMN($D2:$IV2)-3,2)=1)*($D2:$IV2)) 1行目のタイトルを利用する方法 =SUMPRODUCT((LEFT($D$1:$IV1,2)="g-")*($D2:$IV2)) または =SUM(IF(LEFT($1:$1,2)="g-",2:2,0)) でCtrl+Shift+Enterで配列数式にする。(設定後に数式の前後に{}が表示される。)

choko_late
質問者

お礼

こんばんは。 早速のご回答、誠に有難うございます。そして仕事で残業続きの上、職場からネットへの接続が出来ない為、このような時間になってしまいました事、お詫び致します。 さて、早速ですがお教え戴きました方法で実行してみたところ、うまい具合に処理が出来なかったようです。しかしながら、これを参考にさせて頂きまして、あれこれいじってみようと思っております<(_ _)>

すると、全ての回答が全文表示されます。

関連するQ&A