エクセルマクロで下のように総量から最大200gずつに仕分けて、
さらにメーカーにおいても仕分けたいのですが、うまくいきませんでした。
メーカー 品名 総量
F 頭痛薬 600g
F 胃腸薬 350g
T 風邪薬 400g
T 目薬 200g
Y 痛み止め 200g
↓
↓
↓200gずつ、メーカーによって仕分ける
↓
F T Y
頭痛薬 200g 風邪薬 200g 痛み止め 200g
頭痛薬 200g 風邪薬 200g
頭痛薬 200g 目薬 200g
胃腸薬 200g
胃腸薬 150g
前回もいろいろと教えていただいたのですが、またどなたか教えていただけませんか?
No.1
- 回答日時:
このような問題は見た目より随分手間のかかる問題です。
このような問題が多発するようでしたらSQLなどのデータベースの導入をお勧めします。いずれにせよ一筋縄ではいきませんが。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
回答ありがとうございました。
まだVBA初心者ですので、上記のコードを参考に作ってみたら
できました。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(メイク・美容) 1番コスパの良いシェービングフォームは? 今はスギ薬局で 「S SELECT シェービングフォーム 1 2022/10/17 16:18
- 頭痛・腰痛・肩こり 薬の飲む量について 不安障害のために、アルプラゾラム一日1〜2錠、眠れない時にエバミールを寝る前に飲 2 2023/03/06 15:59
- FTTH・光回線 BBエキサイト光Fitについての200gについて。 このプロバイダーのこのプランは月200gいかなけ 1 2022/10/16 21:25
- 呼吸器・消化器・循環器の病気 胃腸が弱いのですが今日食べすぎたら その後腹痛→普通便のあとに下痢?緩いのが沢山でました シチューも 3 2022/08/11 18:46
- 食中毒・ノロウイルス 子供の胃腸風邪時の処方薬について 私の受診ついでにかかりつけではない所で 子供も診てもらったのですが 2 2022/05/14 09:50
- 薬学 首肩こり 痛み止めの薬 医療用鎮痛剤 筋肉の痛みに使いたいです 2 2022/05/20 18:24
- 薬学 整体 首肩こり 痛み止めの薬 医療用鎮痛剤 筋肉の痛みに使いたいです 1 2022/05/19 01:38
- 呼吸器・消化器・循環器の病気 胃の痛みの主な治療法について 3 2022/03/28 17:31
- 睡眠障害・不眠症・過眠症 エバミールをほぼ毎日?最近飲んでいます 昼はアルプラゾラム、夜は寝そうになるとソワソワがあり眠れなく 2 2023/04/13 12:34
- 頭痛・腰痛・肩こり 頭痛薬(痛み止め)の種類に関してです。 今は沢山の薬の数がありますが、中で女性の為の生理痛の薬があり 4 2022/04/26 14:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSで複数主キーにおけるsee...
-
エクセルVBAについておねがいし...
-
スマホインカメ撮影のとき
-
【FF7リメイクの順番について】...
-
メルセデスベンツW213 ブルメス...
-
どんなゲームでも難易度を上げ...
-
Switchで3人で楽しめるゲーム
-
ニーアオートマタはクソゲーの...
-
スクエニ、特別損失221億 ソシ...
-
Switchはオワコンに近いですか?
-
Apple musicかLINE musicどっち...
-
GEOて店ありますよね! 最近ゲ...
-
スマホ版ドラクエ5かドラゴンモ...
-
3dsのマスターキーを発行してほ...
-
逆転裁判でサイバンチョが「偶...
-
元祖!!ヤンチャ丸について。
-
5月27日は初代ドラクエの発...
-
Nintendo Switch 1回遊んだゲー...
-
(旧)スクウェアのロープレは、...
-
面白いRPGを教えて下さい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSで複数主キーにおけるsee...
-
DSの戦車系のおすすめゲームは?
-
ドラクエ5 サクラのひとえだの...
-
ポケモンDPの四天王バグ修復は...
-
【FF7リメイクの順番について】...
-
Switchはオワコンに近いですか?
-
3dsのマスターキーを発行してほ...
-
GEOて店ありますよね! 最近ゲ...
-
メルセデスベンツW213 ブルメス...
-
Nintendo Switch 1回遊んだゲー...
-
元祖!!ヤンチャ丸について。
-
ドラクエが好きな方へ、ちょっ...
-
スクエニ、特別損失221億 ソシ...
-
ドラクエ5の嫁はフローラ一択...
-
PS3でドラクエ4~ドラクエ9はプ...
-
任天堂のDS・3DSってもうみんな...
-
Apple musicかLINE musicどっち...
-
あなたはドラクエ派ですか?FF...
-
ウイニングポスト2
-
勝ったときはYOU WIN PERFECTと...
おすすめ情報