[[20181004074001]] 『別のデータを打ち込まず移したい』(からし) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『別のデータを打ち込まず移したい』(からし)

エクセル初心者です。

1列目に都道府県2列目に商品名3列目に数量が記入してあるシートがあります。
もう一つのシートも同様で、都道府県、商品名の順番はそれぞれ違い、都道府県が違くても商品名が被っているものもがあります。
移したい先のシートに含まれてない商品もあります。

1つ1つ打ち込まず数量のデータを移したいのですが、やり方がわかりません。

また、移したい先のシートに含まれない商品は「その他」欄に数量を移すのですが、
「その他」に該当する商品も分かるようにしたいです。

拙い説明で申し訳ありませんが、ご教授願います。

< 使用 Excel:Excel2016、使用 OS:unknown >


状況がよくわかりませんが、とりあえずSUMIFS関数は試してみましたか?

また、「その他」に該当する商品について、ご自身が判定するときはどうしているのですか?
(「その他」に該当する商品のリストがあったり、商品名に゛他゛とついていたりしませんか?)

(もこな2) 2018/10/04(木) 08:28


 >>[1列目に都道府県2列目に商品名3列目に数量が記入してあるシートがあります。]
に基づくレイアウト予想サンプル

 ^^;

     A          B              C     
  1  地域       商品           数量  
  2  北海道     A              100 
  3  東京       B               20 
  4  アメリカ   C               30 
  5  九州       D              200 

 のような感じで。。。もこな2さんも 確認されていますが。
「もう一つのシート」のレイアウト。
完成予想表のレイアウト。
シート名。
「含む」,「その他」の詳細など、
もう少し具体的に教えていただけると、多数回答があるかもです。
2018/10/04 9:30 商品名修正 ^^;

(隠居じーさん) 2018/10/04(木) 09:24


皆さんありがとうございます。
sumifsはまだ試してないです。

 元データシート

  1  地域       商品           数量  
  2  北海道     B           100 
                      A             20
3  東京           B               20 
                      X             50
  4  アメリカ   C               30 
                      B               50
  5   九州       D              200 
移したい先のシート
     A          B              C     
  1  地域       商品           数量  
  2  北海道     A                20         
                      B              100
3  東京            B               20
  4  アメリカ   B               50
                          C              30

  5  九州           D              200   
6    その他                       50

みたいにしたいんです。東京のXがこの場合
移したい先のシートに該当しない商品のためその他にいれます。

商品の順番も統一されてないです。

伝わりますでしょうか、よろしくお願いします。

(からし) 2018/10/04(木) 12:04


シート例ぐちゃぐちゃになってすみません。
(からし) 2018/10/04(木) 12:30

 VBA。。。なにかの参考にでも。。。ならないかもですが
きっともっとスマートなコードがあると思いますです。
Worksheets("Sheet1")。。。元シート
Worksheets("Sheet2")。。。移したいシート

 単に商品が違えば追加するだけです。
同じ商品とか、累計とか。。。対応していません。
例によってバックアップは必須です。

 ^^;

 Option Explicit
Sub main()
    Dim sh01 As Worksheet
    Dim i As Long, j As Long, buf, D, D2, mflg As Boolean
    Set D = CreateObject("Scripting.Dictionary")
    Set D2 = CreateObject("Scripting.Dictionary")
    Set sh01 = Worksheets("Sheet1")
    With Worksheets("Sheet2")
        For i = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
            D(.Cells(i, 2).Value) = ""
        Next
        For i = 2 To sh01.Cells(sh01.Rows.Count, 2).End(xlUp).Row
            For Each buf In D.keys
                If buf = sh01.Cells(i, 2) Then
                    mflg = True
                    Exit For
                End If
            Next
            If mflg = False Then
                D2(j) = Array("その他", sh01.Cells(i, 2), sh01.Cells(i, 3))
                j = j + 1
            End If
            mflg = False
        Next
        i = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
        For Each buf In D2.Items
            .Cells(i, 1).Resize(1, 3) = buf
            i = i + 1
        Next
    End With
End Sub

(隠居じーさん) 2018/10/04(木) 14:56


提示された表がくずれてしまっていたので、とりあえず【元データシート】のほうだけ整理してみました。

【元データシート】

 ______A_________B_______C______
  1  地域      商品    数量
  2  北海道     B       100
                A        20
  3  東京       B        20
                X        50
  4  アメリカ   C        30 
                B        50
  5   九州      D       200 

これをみると、たとえばB2セルって「B(セル内改行)A」っていう文字列が入ってるという説明になってますがホントです?
できなくは無いとおもいますが、ハードル結構あがちゃうような。

そうでは無くて↓のように、A2〜A3がセル結合されていて・・・というような状況であれば、マクロを使って変換することは比較的楽にできるとおもいます。

【元データシート(変換前)】

 ______A_________B_______C______
  1  地域      商品    数量
  2  北海道     B       100
  3             A        20
  4  東京       B        20
  5             X        50
  6  アメリカ   C        30 
  7             B        50
  8   九州      D       200 

  ↓マクロで変換

【元データシート(変換後)】

 ______A_________B_______C______
  1  地域      商品    数量
  2  北海道     B       100
  3  北海道     A        20
  4  東京       B        20
  5  東京       X        50
  6  アメリカ   C        30 
  7  アメリカ   B        50
  8   九州      D       200 

そして、元データシート(変換後)のようにデータが並んでいるのであれば、SUMIFS関数で、

 =SUMIFS(Sheet1!C:C,Sheet1!A:A,A2,Sheet1!B:B,B2)

のような数式を使えば、A列とB列の値を条件にシート1のC列の合計値を導くことができるとおもいますが、如何でしょうか。

(もこな2) 2018/10/04(木) 19:32


 もこな2さん こんばんわ ^^
@@;
気が付きませんでしたがたしかに左端の振り番号から推測すると
そぉいうことなのかもしれませんね。。。
からし さん の ご返信をお待ちしますが
また私のいさみあしかもですね。。。。。。とほほ 〜 A^_^;

(隠居じーさん) 2018/10/04(木) 23:05


隠居じーさん、もこな2さんありがとうございます。

説明不足で元データ表も変換後の形式のシートです。

もこな2さんのSUMIF関数がハマりそうなので
使わせて頂きます!

お二人ありがとうございました!
(からし) 2018/10/05(金) 07:32


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.