• ベストアンサー

エクセルVBAについておねがいします。 

fumufumu_2006の回答

  • ベストアンサー
回答No.2

こんなのではどうでしょうか? Option Explicit Sub test() Dim ss As Worksheet Dim ds As Worksheet Dim sr As Long Dim sc As Integer Dim dr As Integer Dim dc As Integer Dim v As Integer Dim s As String Dim d() As String Set ss = Sheets("sheet1") '元シート Set ds = Sheets("sheet2") '出力シート ds.Cells.Clear 'メーカー抽出(重複削除) 'vbNullCharはセパレータで何でもいい(カンマなど) For sr = 2 To ss.Cells(ss.Rows.Count, 1).End(xlUp).Row If InStr(vbNullChar & s, vbNullChar & ss.Cells(sr, 1).Value & vbNullChar) = 0 Then s = s & ss.Cells(sr, 1).Value & vbNullChar End If Next 'メーカー名をdsへ s = Replace(s, vbNullChar, vbNullChar & vbNullChar) '1行空けるために d = Split(s, vbNullChar) ds.Cells(1, 1).Resize(1, UBound(d)) = d 'dsの各行のデータを設定 For sr = 2 To ss.Cells(ss.Rows.Count, 1).End(xlUp).Row dc = WorksheetFunction.Match(ss.Cells(sr, 1), ds.Cells(1, 1).Resize(1, UBound(d)), 0) '列を取得するのにmatch関数を使用 dr = ds.Cells(ds.Rows.Count, dc).End(xlUp).Row + 1 'v = ss.Cells(sr, 3) v = Val(ss.Cells(sr, 3)) '総量にg(グラム)がついている(文字)の場合 Do ds.Cells(dr, dc) = ss.Cells(sr, 2) If v > 200 Then ds.Cells(dr, dc + 1) = 200 'ds.Cells(dr, dc + 1) = "200g" 'g(グラム)をつける場合 v = v - 200 dr = dr + 1 Else ds.Cells(dr, dc + 1) = v 'ds.Cells(dr, dc + 1) = v & "g" 'g(グラム)をつける場合 Exit Do End If Loop Next End Sub

kenta11
質問者

お礼

回答ありがとうございました。 まだVBA初心者ですので、上記のコードを参考に作ってみたら できました。 どうもありがとうございました。

関連するQ&A

  • エクセル VBAについて質問です。

    エクセルで下のように総量から最大200gずつに仕分ける ことはできますか? 品名  総量 頭痛薬 600g 胃腸薬 350g 風邪薬 400g ↓ ↓200gずつに仕分ける ↓ 頭痛薬 200g 頭痛薬 200g 頭痛薬 200g 胃腸薬 200g 胃腸薬 150g 風邪薬 200g 風邪薬 200g 当方、VBAについて1週間ほど考えましたが、できませんでした。 よろしくお願いします。

  • Excel VBAで自動見積を行いたいと考えています。ご教授下さい。

    Excel VBAで自動見積を行いたいと考えています。ご教授下さい。 まだ、VBAを始めたばかりの初心者です。 下記の様な独立した2つのブックがあります。 実行したいのは 第一のブック(sheet1)のC列の品名を見て第二のブック(Sheet1)のC列の品名が一致する場合、 その行にある単価(F列)を第一のブックの単価欄(G列)にコピーしたいのです。 その作業を第一のブックの品名欄が空白になるまで繰り返し行い、合計値を算出したいと思っています。 また、見積依頼者が品名記載ミスをした場合に備え、類似品(上5桁程度で検索)も可能でしょうか? 第二のブックに該当品名が無い場合には(?)等を第一のブック価格欄に表示したいのですが・・・・ 初心者には、欲張り過ぎているため、作業スタートが出来ません。 ご教授頂きたくお願い致します。 見積部品シート(第1のブック/sheet1)     A   B     C    D     E    F   G    H I    J 1 記号  規格    品名  品番   メーカー  数量  単価   小計 2 R1  1W10Ω    AAAA  0123    あ    1 =F2*G2 3 C1  50V10μF  BBBB  4567    い    2  =F3*G3 4 D1  1S2000   CCCC  8901    う    1 =F4*G4 5 T1  10VA    DDDD  2345    え    2 =F5*G5 6 価格データベース(第2のブック/sheet1)    A       B     C    D     E     F    G I    J 1 名称      規格    品名   品番   メーカー  単価   2 抵抗      1W10Ω    AAAA  0123   あ     2 3 コンデンサー  50V100μF  BBBB   4567   い    20 4 ダイオード   1SS***   CCCC   8901   う    45 5 IC       XXXXD   DDDD 1245    え    100   

  • Excel VBAで自動見積を行いたいと考えています。ご教授下さい。

    Excel VBAで自動見積を行いたいと考えています。ご教授下さい。 まだ、VBAを始めたばかりの初心者です。 下記の様な独立した2つのブックがあります。 実行したいのは 第一のブック(sheet1)のC列の品名を見て第二のブック(Sheet1)のC列の品名が一致する場合、 その行にある単価(F列)を第一のブックの単価欄(G列)にコピーしたいのです。 その作業を第一のブックの品名欄が空白になるまで繰り返し行い、合計値を算出したいと思っています。 また、見積依頼者が品名記載ミスをした場合に備え、類似品(上5桁程度で検索)も可能でしょうか? 第二のブックに該当品名が無い場合には(?)等を第一のブック価格欄に表示したいのですが・・・・ 初心者には、欲張り過ぎているため、作業スタートが出来ません。 ご教授頂きたくお願い致します。 見積部品シート(第1のブック/sheet1)     A   B     C    D     E    F   G    H I    J 1 記号  規格    品名  品番   メーカー  数量  単価   小計 2 R1  1W10Ω    AAAA  0123    あ    1 =F2*G2 3 C1  50V10μF  BBBB  4567    い    2  =F3*G3 4 D1  1S2000   CCCC  8901    う    1 =F4*G4 5 T1  10VA    DDDD  2345    え    2 =F5*G5 6 価格データベース(第2のブック/sheet1)    A       B     C    D     E     F    G I    J 1 名称      規格    品名   品番   メーカー  単価   2 抵抗      1W10Ω    AAAA  0123   あ     2 3 コンデンサー  50V100μF  BBBB   4567   い    20 4 ダイオード   1SS***   CCCC   8901   う    45 5 IC       XXXXD   DDDD 1245    え    100     

  • fanucの簡単なマクロ教えてください!

    okkのマシニングセンターを使い始めたんですが、簡単な慣らし運転のマクロを作りたいと思います(fanuc) O1 G91G28G00Z0 G28X0Y0 M03S500 G01X819Y-509F4000(最大ストロークX820Y-510) G28G01X0Y0 この作業(最後の2行)を繰り返したいのですがどういったマクロになるのでしょうか?

  • EXCEL マクロ(2)

    EXCEL マクロ B1セルからF1 B2セルからF2 B3セルからF3 までとに文字"T"のデータであるセルがあります。 (1) その数をカウントして各G1,G2,G3に入れる処理 をどのようにかけばいいですか。

  • 軽い風邪

    以前虚弱体質改善について質問した者です。胃腸のほうはビール酵母を数ヶ月飲んでいてかなり調子イイです(ほとんどお腹を下すということはなくなりました)。しかし風邪の症状は治りません。その症状は頭痛、目が重い(ショボショボする感じ)だけで鼻がでたり喉が痛いということはありません。これが数ヶ月続いています。市販の風邪薬を飲むと症状は緩和されるのですが、完治には至りません。何かの病気なのではないかと心配でもあります。それで一度病院に行ったのですが「風邪ですね。」と言われ薬を貰って帰ってきました。。貰った薬を飲んでいる内は調子イイのですが、それがきれるとまたいつもの頭痛と目がショボショボになります。。。 何とか完治したいのですが、薬、生活習慣等でアドバイスをお願いします。

  • エクセルで在庫表のテンプレートを作りたい

    ・・・んですけど、一枚のシートでページ毎に  品名  型番  メーカー 1A      X    い 2B       Y    ろ 3C      Z    は - 品名  型番  メーカー 1D      J     に 2E     H     ほ 3F      I       へ みたいに、品名と123の番号だけ固定してテーブルのなかの文字と数だけを簡単に入力したり、入れ替えたり出来ないか悩んでます。どなたかご存知ないですか?

  • 胃腸風邪?腹痛とはこんなに続く??

    2日前から胃腸の調子が悪いな~・・・と思っていたら、腹痛が出てきた。 下痢をしていて、トイレを往復するが、腹痛は治まらない・・・ 下痢はしているものの、出る物は出ず・・・ しばらく数時間ま~調子もよかった(違和感はあり)けど、また腹痛・・・ それ以来持続した腹痛があり、病院へ。 胃腸風邪だろうとの診断で、胃腸の痛み止めと栄養補給のため点滴。 調整剤と抗生物質、胃薬、痛み止めを処方してもらいました。 自宅にもどりましたが、直ぐにまた腹痛。 で、3日目にはいりました・・・ 胃腸風邪は初めてです。 こんな腹痛も初めてです。 胃腸風邪での腹痛とは、こんなに継続するものでしょうか? ウィルス性であろうかと思いますが、腹痛がこれだけ持続するものですか? 下痢は物を食べてないので収まり気味です。 しかし、この腹痛・・・ 下痢でトイレに駆け込む前の腹痛が、こんなに持続するものでしょうか? 現在も痛み止めを飲みましたが、短時間で効果は切れてしまうし、しかし、4時間程は空けろとのことなので、痛み止めを飲まずに踏ん張っています。 胃腸風邪が流行る季節・・・皆さんも気をつけてください。 そして、こんなに腹痛が続くものか・・・どうぞアドバイス下さい。

  • convolution について

    convolution f*g の定義を f,g∈L^1(R^N) に対して f*g = ∫f(x-y)g(y)dy = ∫f(y)g(x-y)dy としてありました。 f*g = ∫f(x-y)g(y)dy において x-y = t とおいて置換積分すると ∫f(x-y)g(y)dy = ∫f(t)g(x-t)(-dt) =-∫f(t)g(x-t)dt tをyと見れば、 f*g = ∫f(x-y)g(y)dy = -∫f(y)g(x-y)dy となる気がします。 定義式の符号に - がないのはなぜですか?

  • 医療控除対象となる領収書のもらい方

    医療控除に必要な領収書ですが、薬局で風邪薬や胃薬を購入する際、但書は「風邪薬代」「胃腸薬代」などで大丈夫なんですか?薬品名は必要ないのですか? また、薬局でも苗字だけでなく、フルネームでもらう必要がありますか?