エクセルのマクロの質問です。実店舗と通販の在庫管理、顧客管理をエクセルで行っています。

実店舗は「来店記録」と「顧客名簿」、通販は「通販管理」というファイルに記録しています。現在各々のファイルが関連付けられていないので在庫管理、顧客管理に役立っていません。
そこで実店舗の「来店記録」に通販の購入履歴を載せることで顧客の購入履歴を一元化しようと考えました。
「通販管理」から購入履歴を「来店記録」にマクロで転記したいと思います。
「通販管理」の複数行を選択したとき、その中から必要なデータだけを取り出し、「来店記録」に転記するにはどうしたらよいでしょうか?
マクロの知識が浅いため、解決方法そのものを教えていただければうれしいです。もしそのまま使える完全なコードややり方を回答していただいた回答者の方には500ポイントを差し上げます。よろしくお願いいたします。
※文字制限のため「来店記録」、「通販管理」のサンプルデータ、仕様の詳細はこの下にある「この質問・回答へのコメント」に記載いたします。

回答の条件
  • 1人5回まで
  • 登録:2008/05/17 10:21:55
  • 終了:2008/05/18 19:27:04

ベストアンサー

id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692008/05/18 18:14:22

ポイント1500pt

3つの機能追加しました。

3つ目ですが、転記済みのデータはとばして、それ以外を転記し、転記済みのデータが含まれていたことを表示するようにしました。


注)プラウザの横幅が狭いと勝手にコードが右端で折り返されることがあるので、コピーするときは折り返されてるところは直してください。

Sub MacroTenki()
    Dim i As Integer
    Dim j As Integer
    Dim raiten_Last As Long             '来店記録の最終行
    Dim tuuhan_Last As Long             '通販管理の最終行
    Dim Rmidasi_name(13) As String      '来店記録の見出の文字列
    Dim Tmidasi_name(14) As String      '通販管理の見出の文字列
    Dim Rmidasi_column(13) As Integer   '来店記録の見出の位置
    Dim Tmidasi_column(14) As Integer   '通販管理の見出の位置
    Dim r As Range
    Dim err_Mes As String               'エラーメッセージ
    Dim strDate As String
    Dim myDate As Date
    Dim fSelect As Boolean              '名前が選択されているか
    Dim myCount As Long                 '転記数
    Dim fZumi As Boolean                '済の行を転記しようとしたか
    
    '来店記録の見出の文字列。シートを変更する場合はこちらも変更
    Rmidasi_name(0) = "店舗"
    Rmidasi_name(1) = "会員番号"
    Rmidasi_name(2) = "旧会員番号"
    Rmidasi_name(3) = "会員資格"
    Rmidasi_name(4) = "名前"
    Rmidasi_name(5) = "フリガナ"
    Rmidasi_name(6) = "来店日"
    Rmidasi_name(7) = "売上"
    Rmidasi_name(8) = "ポイント"
    Rmidasi_name(9) = "バッグポイント"
    Rmidasi_name(10) = "累計P数"
    Rmidasi_name(11) = "コメント"
    Rmidasi_name(12) = "商品名"
    Rmidasi_name(13) = "商品番号"
    
    '通販管理の見出の文字列。シートを変更する場合はこちらも変更
    Tmidasi_name(0) = ""
    Tmidasi_name(1) = "会員番号"
    Tmidasi_name(2) = "旧会員番号"
    Tmidasi_name(3) = "会員資格"
    Tmidasi_name(4) = "名前"
    Tmidasi_name(5) = "フリガナ"
    Tmidasi_name(6) = "注文番号"
    Tmidasi_name(7) = "売上"
    Tmidasi_name(8) = "ポイント"
    Tmidasi_name(9) = "バッグポイント"
    Tmidasi_name(10) = "累計ポイント"
    Tmidasi_name(11) = "コメント"
    Tmidasi_name(12) = "商品名"
    Tmidasi_name(13) = "商品番号"
    Tmidasi_name(14) = "来店記録チェック"
       
    Const raiten_Midasi As Long = 1     '来店記録の見出の行
    Const tuuhan_Midasi As Long = 1     '通販管理の見出の行
    
    For j = 0 To 13
        For i = 1 To 256
            If Worksheets("来店記録").Cells(raiten_Midasi, i).Value = Rmidasi_name(j) Then
                Rmidasi_column(j) = i
                Exit For
            End If
        Next i
    Next j
    For i = 0 To 13
        If Rmidasi_column(i) = 0 Then
            MsgBox "来店記録の見出を確認してください"
            Exit Sub
        End If
    Next i
    For j = 1 To 14
        For i = 1 To 256
            If Worksheets("通販管理").Cells(tuuhan_Midasi, i).Value = Tmidasi_name(j) Then
                Tmidasi_column(j) = i
                Exit For
            End If
        Next i
    Next j
    For i = 1 To 14
        If Tmidasi_column(i) = 0 Then
            MsgBox "通販管理の見出を確認してください"
            Exit Sub
        End If
    Next i
    
    raiten_Last = Worksheets("来店記録").Cells(Rows.Count, Rmidasi_column(0)).End(xlUp).Row
    tuuhan_Last = Worksheets("通販管理").Cells(Rows.Count, Selection.Column).End(xlUp).Row
    
    '在庫管理の日付のチェック
    With Worksheets("来店記録")
        For i = raiten_Midasi + 1 To raiten_Last
            If IsDate(.Cells(i, Rmidasi_column(6))) Then
                If myDate > DateValue(.Cells(i, Rmidasi_column(6))) Then
                    MsgBox "来店記録の来店日が日付順になっていません"
                    Exit Sub
                Else
                    myDate = DateValue(.Cells(i, Rmidasi_column(6)))
                End If
            Else
                MsgBox "在庫管理の来店日に日付以外が入力されています"
                Exit Sub
            End If
        Next i
    End With
    
    '転記部分
    With Worksheets("通販管理")
        For Each r In Selection
            If r.Column = Tmidasi_column(4) And r.Row > tuuhan_Midasi And r.Row <= tuuhan_Last Then
                fSelect = True
                If .Cells(r.Row, Tmidasi_column(14)).Value <> "済" Then
                    strDate = .Cells(r.Row, Tmidasi_column(6)).Value
                    strDate = "20" & Left(strDate, 2) & "/" & Mid(strDate, 3, 2) & "/" & Mid(strDate, 5, 2)
                    If IsDate(strDate) Then
                        For i = raiten_Midasi + 1 To raiten_Last + 1
                            If DateValue(strDate) < Worksheets("来店記録").Cells(i, Rmidasi_column(6)).Value Or _
                                Worksheets("来店記録").Cells(i, Rmidasi_column(6)).Value = "" Then
                                Worksheets("来店記録").Rows(i).EntireRow.Insert
                                Worksheets("来店記録").Cells(i, Rmidasi_column(0)).Value = "通販"
                                For j = 1 To 13
                                    Worksheets("来店記録").Cells(i, Rmidasi_column(j)).Value = .Cells(r.Row, Tmidasi_column(j)).Value
                                Next j
                                Worksheets("来店記録").Cells(i, Rmidasi_column(6)).Value = DateValue(strDate)
                                .Cells(r.Row, Tmidasi_column(14)).Value = "済"
                                myCount = myCount + 1
                                raiten_Last = raiten_Last + 1
                                Exit For
                            End If
                        Next i
                    Else
                        err_Mes = err_Mes & r.Row & "行の日付が不正です" & vbCrLf
                    End If
                Else
                    fZumi = True
                End If
            End If
        Next r
    End With
    
    If fSelect Then
        MsgBox myCount & "件の転記を終了しました"
    Else
        MsgBox "通販管理シートで名前を選択してから実行してください"
    End If
    If err_Mes <> "" Then MsgBox err_Mes
    If fZumi Then MsgBox "転記済みのデータが含まれていました"
End Sub
id:icta

> SALINGERさん

早々の機能追加ありがとうございました。

これならばスタッフたちも使いこなせそうです。

イレギュラー対処のコードの方が本体のコードより長くなってしまうかもしれませんが、実際の運用を考えると絶対必要な部分なのでしょうね。

SALINGERさんのおかげで作業をずいぶん簡略化することができました。

ほんの気持ちですがポイントを大目に入れておきます。

新しい質問を投稿しましたのでもしお時間ありましたらご覧になってみてください。

http://q.hatena.ne.jp/1211105656

目指す改善まであともう少しです。

あと少しだけおつきあいいただければうれしいです。

2008/05/18 19:26:23

その他の回答(1件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692008/05/18 13:04:41

作ってみました。

一度配列に格納することはしませんでした。配列を使ってもいいのですが、Excelのシート自体が配列のようなものなので

重複するかなと思ったからです。

それから、コメントを見ると担当のところに数字が入っているようですが、わからなかったので省きました。

転記自体は短いコードでいいのですが、見出しの検索や想定されるエラーを組み込むと長いコードになってしまいました。

Sub MacroTenki()
    Dim i As Integer
    Dim j As Integer
    Dim raiten_Last As Long             '来店記録の最終行
    Dim tuuhan_Last As Long             '通販管理の最終行
    Dim Rmidasi_name(13) As String      '来店記録の見出の文字列
    Dim Tmidasi_name(13) As String      '通販管理の見出の文字列
    Dim Rmidasi_column(13) As Integer   '来店記録の見出の位置
    Dim Tmidasi_column(13) As Integer   '通販管理の見出の位置
    Dim r As Range
    Dim err_Mes As String               'エラーメッセージ
    Dim strDate As String
    Dim myDate As Date
    
    '来店記録の見出の文字列。シートを変更する場合はこちらも変更
    Rmidasi_name(0) = "店舗"
    Rmidasi_name(1) = "会員番号"
    Rmidasi_name(2) = "旧会員番号"
    Rmidasi_name(3) = "会員資格"
    Rmidasi_name(4) = "名前"
    Rmidasi_name(5) = "フリガナ"
    Rmidasi_name(6) = "来店日"
    Rmidasi_name(7) = "売上"
    Rmidasi_name(8) = "ポイント"
    Rmidasi_name(9) = "バッグポイント"
    Rmidasi_name(10) = "累計P数"
    Rmidasi_name(11) = "コメント"
    Rmidasi_name(12) = "商品名"
    Rmidasi_name(13) = "商品番号"
    
    '通販管理の見出の文字列。シートを変更する場合はこちらも変更
    Tmidasi_name(0) = ""
    Tmidasi_name(1) = "会員番号"
    Tmidasi_name(2) = "旧会員番号"
    Tmidasi_name(3) = "会員資格"
    Tmidasi_name(4) = "名前"
    Tmidasi_name(5) = "フリガナ"
    Tmidasi_name(6) = "注文番号"
    Tmidasi_name(7) = "売上"
    Tmidasi_name(8) = "ポイント"
    Tmidasi_name(9) = "バッグポイント"
    Tmidasi_name(10) = "累計ポイント"
    Tmidasi_name(11) = "コメント"
    Tmidasi_name(12) = "商品名"
    Tmidasi_name(13) = "商品番号"
       
    Const raiten_Midasi As Long = 1     '来店記録の見出の行
    Const tuuhan_Midasi As Long = 1     '通販管理の見出の行
    
    For j = 0 To 13
        For i = 1 To 256
            If Worksheets("来店記録").Cells(raiten_Midasi, i).Value = Rmidasi_name(j) Then
                Rmidasi_column(j) = i
                Exit For
            End If
        Next i
    Next j
    For i = 0 To 13
        If Rmidasi_column(i) = 0 Then
            MsgBox "来店記録の見出を確認してください"
            Exit Sub
        End If
    Next i
    For j = 1 To 13
        For i = 1 To 256
            If Worksheets("通販管理").Cells(tuuhan_Midasi, i).Value = Tmidasi_name(j) Then
                Tmidasi_column(j) = i
                Exit For
            End If
        Next i
    Next j
    For i = 1 To 13
        If Tmidasi_column(i) = 0 Then
            MsgBox "通販管理の見出を確認してください"
            Exit Sub
        End If
    Next i
    
    raiten_Last = Worksheets("来店記録").Cells(Rows.Count, Rmidasi_column(0)).End(xlUp).Row
    tuuhan_Last = Worksheets("通販管理").Cells(Rows.Count, Selection.Column).End(xlUp).Row
    
    '在庫管理の日付のチェック
    With Worksheets("来店記録")
        For i = raiten_Midasi + 1 To raiten_Last
            If IsDate(.Cells(i, Rmidasi_column(6))) Then
                If myDate > DateValue(.Cells(i, Rmidasi_column(6))) Then
                    MsgBox "来店記録の来店日が日付順になっていません"
                    Exit Sub
                Else
                    myDate = DateValue(.Cells(i, Rmidasi_column(6)))
                End If
            Else
                MsgBox "在庫管理の来店日に日付以外が入力されています"
                Exit Sub
            End If
        Next i
    End With
    
    '転記部分
    With Worksheets("通販管理")
        For Each r In Selection
            If r.Column = Tmidasi_column(4) And r.Row > tuuhan_Midasi And r.Row <= tuuhan_Last Then
                strDate = .Cells(r.Row, Tmidasi_column(6)).Value
                strDate = "20" & Left(strDate, 2) & "/" & Mid(strDate, 3, 2) & "/" & Mid(strDate, 5, 2)
                If IsDate(strDate) Then
                    For i = raiten_Midasi + 1 To raiten_Last + 1
                        If DateValue(strDate) < Worksheets("来店記録").Cells(i, Rmidasi_column(6)).Value Or _
                            Worksheets("来店記録").Cells(i, Rmidasi_column(6)).Value = "" Then
                            Worksheets("来店記録").Rows(i).EntireRow.Insert
                            Worksheets("来店記録").Cells(i, Rmidasi_column(0)).Value = "通販"
                            For j = 1 To 13
                                Worksheets("来店記録").Cells(i, Rmidasi_column(j)).Value = .Cells(r.Row, Tmidasi_column(j)).Value
                            Next j
                            Worksheets("来店記録").Cells(i, Rmidasi_column(6)).Value = DateValue(strDate)
                            raiten_Last = raiten_Last + 1
                            Exit For
                        End If
                    Next i
                Else
                    err_Mes = err_Mes & r.Row & "行の日付が不正です" & vbCrLf
                End If
            End If
        Next r
    End With
    
    If err_Mes <> "" Then MsgBox err_Mes
End Sub
id:icta

> SALINGERさん

早々のご回答ありがとうございました。

完全に希望通りの動作を確認しました。

"累計ポイント"と"累計P"の表記の未統一や日付順に並んでいない場合はエラーメッセージを出すところまで気を配っていただきありがとうございました。

表記の未統一は本来統一すべきものなので修正しました。ファイルはそれぞれの担当者が勝手に列を増やして行ったため未統一のものが多く、これには気がつきませんでした。

日付順のエラーメッセージも日付どおりになっていない箇所があることに改めて気がつかされました。

細かいところまでに行き届いた設計で大変うれしいです。

エクセルをまったく知らないスタッフの気持ちになって操作してみると、次のような機能があると安心できるかもしれないと思いました。

○「通販管理」シートの"名前"列を選択しないでマクロを実行すると「操作が誤っています。通販管理で名前を選択してから実行してください」というエラーメッセージを出す。

○マクロを正常に終了したときは「××件の転記を終了しました」というメッセージを表示する。

○「通販管理」に"来店記録チェック"という列を新たに設けておき、「来店記録」に転記したときはここに"済"と入れる。もし誤って"済"の付いた行を転記しようとしたときは「転記済みのデータが含まれています。選択を見直してください」というエラーメッセージを出す。

多数のスタッフが操作しますので操作のあやまり防止用のために必要になると思われます。

後からの機能追加でいつも大変心苦しいのですがお力をお借りできれば幸いです。

> コメントを見ると担当のところに数字が入っているようですが、わからなかったので省きました。

申し訳ありません。記載のときの誤りです。お手数をおかけしました。

2008/05/18 17:51:20
id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692008/05/18 18:14:22ここでベストアンサー

ポイント1500pt

3つの機能追加しました。

3つ目ですが、転記済みのデータはとばして、それ以外を転記し、転記済みのデータが含まれていたことを表示するようにしました。


注)プラウザの横幅が狭いと勝手にコードが右端で折り返されることがあるので、コピーするときは折り返されてるところは直してください。

Sub MacroTenki()
    Dim i As Integer
    Dim j As Integer
    Dim raiten_Last As Long             '来店記録の最終行
    Dim tuuhan_Last As Long             '通販管理の最終行
    Dim Rmidasi_name(13) As String      '来店記録の見出の文字列
    Dim Tmidasi_name(14) As String      '通販管理の見出の文字列
    Dim Rmidasi_column(13) As Integer   '来店記録の見出の位置
    Dim Tmidasi_column(14) As Integer   '通販管理の見出の位置
    Dim r As Range
    Dim err_Mes As String               'エラーメッセージ
    Dim strDate As String
    Dim myDate As Date
    Dim fSelect As Boolean              '名前が選択されているか
    Dim myCount As Long                 '転記数
    Dim fZumi As Boolean                '済の行を転記しようとしたか
    
    '来店記録の見出の文字列。シートを変更する場合はこちらも変更
    Rmidasi_name(0) = "店舗"
    Rmidasi_name(1) = "会員番号"
    Rmidasi_name(2) = "旧会員番号"
    Rmidasi_name(3) = "会員資格"
    Rmidasi_name(4) = "名前"
    Rmidasi_name(5) = "フリガナ"
    Rmidasi_name(6) = "来店日"
    Rmidasi_name(7) = "売上"
    Rmidasi_name(8) = "ポイント"
    Rmidasi_name(9) = "バッグポイント"
    Rmidasi_name(10) = "累計P数"
    Rmidasi_name(11) = "コメント"
    Rmidasi_name(12) = "商品名"
    Rmidasi_name(13) = "商品番号"
    
    '通販管理の見出の文字列。シートを変更する場合はこちらも変更
    Tmidasi_name(0) = ""
    Tmidasi_name(1) = "会員番号"
    Tmidasi_name(2) = "旧会員番号"
    Tmidasi_name(3) = "会員資格"
    Tmidasi_name(4) = "名前"
    Tmidasi_name(5) = "フリガナ"
    Tmidasi_name(6) = "注文番号"
    Tmidasi_name(7) = "売上"
    Tmidasi_name(8) = "ポイント"
    Tmidasi_name(9) = "バッグポイント"
    Tmidasi_name(10) = "累計ポイント"
    Tmidasi_name(11) = "コメント"
    Tmidasi_name(12) = "商品名"
    Tmidasi_name(13) = "商品番号"
    Tmidasi_name(14) = "来店記録チェック"
       
    Const raiten_Midasi As Long = 1     '来店記録の見出の行
    Const tuuhan_Midasi As Long = 1     '通販管理の見出の行
    
    For j = 0 To 13
        For i = 1 To 256
            If Worksheets("来店記録").Cells(raiten_Midasi, i).Value = Rmidasi_name(j) Then
                Rmidasi_column(j) = i
                Exit For
            End If
        Next i
    Next j
    For i = 0 To 13
        If Rmidasi_column(i) = 0 Then
            MsgBox "来店記録の見出を確認してください"
            Exit Sub
        End If
    Next i
    For j = 1 To 14
        For i = 1 To 256
            If Worksheets("通販管理").Cells(tuuhan_Midasi, i).Value = Tmidasi_name(j) Then
                Tmidasi_column(j) = i
                Exit For
            End If
        Next i
    Next j
    For i = 1 To 14
        If Tmidasi_column(i) = 0 Then
            MsgBox "通販管理の見出を確認してください"
            Exit Sub
        End If
    Next i
    
    raiten_Last = Worksheets("来店記録").Cells(Rows.Count, Rmidasi_column(0)).End(xlUp).Row
    tuuhan_Last = Worksheets("通販管理").Cells(Rows.Count, Selection.Column).End(xlUp).Row
    
    '在庫管理の日付のチェック
    With Worksheets("来店記録")
        For i = raiten_Midasi + 1 To raiten_Last
            If IsDate(.Cells(i, Rmidasi_column(6))) Then
                If myDate > DateValue(.Cells(i, Rmidasi_column(6))) Then
                    MsgBox "来店記録の来店日が日付順になっていません"
                    Exit Sub
                Else
                    myDate = DateValue(.Cells(i, Rmidasi_column(6)))
                End If
            Else
                MsgBox "在庫管理の来店日に日付以外が入力されています"
                Exit Sub
            End If
        Next i
    End With
    
    '転記部分
    With Worksheets("通販管理")
        For Each r In Selection
            If r.Column = Tmidasi_column(4) And r.Row > tuuhan_Midasi And r.Row <= tuuhan_Last Then
                fSelect = True
                If .Cells(r.Row, Tmidasi_column(14)).Value <> "済" Then
                    strDate = .Cells(r.Row, Tmidasi_column(6)).Value
                    strDate = "20" & Left(strDate, 2) & "/" & Mid(strDate, 3, 2) & "/" & Mid(strDate, 5, 2)
                    If IsDate(strDate) Then
                        For i = raiten_Midasi + 1 To raiten_Last + 1
                            If DateValue(strDate) < Worksheets("来店記録").Cells(i, Rmidasi_column(6)).Value Or _
                                Worksheets("来店記録").Cells(i, Rmidasi_column(6)).Value = "" Then
                                Worksheets("来店記録").Rows(i).EntireRow.Insert
                                Worksheets("来店記録").Cells(i, Rmidasi_column(0)).Value = "通販"
                                For j = 1 To 13
                                    Worksheets("来店記録").Cells(i, Rmidasi_column(j)).Value = .Cells(r.Row, Tmidasi_column(j)).Value
                                Next j
                                Worksheets("来店記録").Cells(i, Rmidasi_column(6)).Value = DateValue(strDate)
                                .Cells(r.Row, Tmidasi_column(14)).Value = "済"
                                myCount = myCount + 1
                                raiten_Last = raiten_Last + 1
                                Exit For
                            End If
                        Next i
                    Else
                        err_Mes = err_Mes & r.Row & "行の日付が不正です" & vbCrLf
                    End If
                Else
                    fZumi = True
                End If
            End If
        Next r
    End With
    
    If fSelect Then
        MsgBox myCount & "件の転記を終了しました"
    Else
        MsgBox "通販管理シートで名前を選択してから実行してください"
    End If
    If err_Mes <> "" Then MsgBox err_Mes
    If fZumi Then MsgBox "転記済みのデータが含まれていました"
End Sub
id:icta

> SALINGERさん

早々の機能追加ありがとうございました。

これならばスタッフたちも使いこなせそうです。

イレギュラー対処のコードの方が本体のコードより長くなってしまうかもしれませんが、実際の運用を考えると絶対必要な部分なのでしょうね。

SALINGERさんのおかげで作業をずいぶん簡略化することができました。

ほんの気持ちですがポイントを大目に入れておきます。

新しい質問を投稿しましたのでもしお時間ありましたらご覧になってみてください。

http://q.hatena.ne.jp/1211105656

目指す改善まであともう少しです。

あと少しだけおつきあいいただければうれしいです。

2008/05/18 19:26:23
  • id:icta
    これはhttp://q.hatena.ne.jp/1210836514,http://q.hatena.ne.jp/1210860623,http://q.hatena.ne.jp/1210901281の派生質問です。
    データを記録するのはエクセルの知識がほとんどない販売スタッフです。データベースソフトを使えればよいのですが以前業者に依頼したものは導入に失敗しました。作業が煩雑になったのと各店舗に散らばるスタッフへの教育が難しく変更に対応できなかったためです。
    そのため現行作業をあまり変えることなく行うのが今回の方針です。


    「来店記録」

    店舗 会員番号 旧会員番号 会員資格 名前 フリガナ 来店日 担当 売上 ポイント バッグポイント 累計P数 コメント 商品名 商品番号
    新宿 D00572 D572 正 春丘 ハルオカ 2008/5/10 長岡 20000 10  36 クーポンご利用されました XXカットソー,VVパンツM,IITシャツ A080102,D070604,A080201
    新宿 D00396 D396 正 服部 ハットリ 2008/5/10 長岡 5000 2  12  GGショール F080203
    原宿 D00645 D645 正 坂下 サカシタ 2008/5/10 佐藤 10000 5 1 108  JJジャケット3,EEパンツ2 C080402,D080601
    原宿 L00239 L239 正 杉本 スギモト 2008/5/10 佐藤 4000 2  23 本日より正会員 OOキャミ2 A080607
    上野 D00146 D146 仮 落合 オチアイ 2008/5/11 長岡 8000 4 1 5 プレゼントとのことでした PPバッグ G080701
    上野 C00148 148 仮 脇永 ワキナガ 2008/5/11 長岡 9000 4  4  ZZサンダル F080706×2,
    上野 C01329 1329 正 川畑 カワハタ 2008/5/11 吉田 15000 7  51  LLリング,UUネックレス H080701,H080601
    上野 D00638 D638 正 長浜 ナガハマ 2008/5/11 吉田 6000 3  10  RRストール赤 J080703
    新宿 D00638 D638 正 長浜 ナガハマ 2008/5/12 長岡 -6000 -3  -1 107 不良品とのこと RRストール赤 J080703
    新宿 C03825 3825 正 山内 ヤマウチ 2008/5/12 吉田 12000 6  15  OOキャミ2,UUネックレス A080607,H080601


    「通販管理」

    連番 会員番号 旧会員番号 会員資格 名前 フリガナ 郵便番号 住所 電話番号 PCメール 注文番号 売上 商品番号 商品名 ポイント バッグポイント 累計ポイント コメント
    13362 C02022 1687 正 加藤 カトウ 002-0093 東京都XXXX 03-YYYY-ZZZZ AAA@BBB.CC 08051018 29000 A080102,A080201 XXカットソー,IITシャツ 14  24 本日より本会員。
    13363 C06760 2326 正 竹下 タケシタ 340-0010 愛知県XXXX 090-YYYY-ZZZZ BBB@AAA.CC 08051019 2800 A080201 IITシャツ 1 1 74 クーポン利用
    13364 C01812 1534 正 沖原 オキハラ 631-3270 広島県XXXX 090-YYYY-ZZZZ CCC@BBB.CC 08051101 5000 A080607,C080402 OOキャミ2,JJジャケット3 2  179 本日より本会員。
    13365 C01609 884 仮 保坂 ホサカ 125-0010 横浜市XXXX 045-YYYY-ZZZZ DDD@BBB.CC 08051201 9400 D070604,D080601,F080203 VVパンツM,EEパンツ2,GGショール 4  18 プレゼントに


    ■仕様

    ○概要
    「通販管理」で転記したい顧客の名前を選択。顧客の会員番号、旧会員番号、会員資格、名前、フリガナ、注文番号(※年月日に変換して来店日とする)、売上、ポイント、バッグポイント、累計ポイント、コメントを「来店記録」に転記する。"店舗"列には"通販"と入れる。

    ○詳細
    ・「通販管理」で転記したい顧客の名前を選択。選択は複数行の場合も、行をまたぐ場合もある。
    ・顧客の会員番号、旧会員番号、会員資格、名前、フリガナ、注文番号(=来店日 年月日に変換する)、売上、ポイント、バッグポイント、累計ポイント、コメントを配列に保存する。
    ・注文番号は"08040418"となっており最初の6桁が年月日を表し2008/04/04の18番目の売上を意味する。この注文番号から最初の6桁を年月日に変換、これを来店日とし配列に保存する。
    ・列位置はサンプルどおりではなく、今後のカスタマイズにも柔軟に対応させるため、「通販管理」、「来店記録」の1列1行目から検索し、それぞれのデータがシートの何列目に存在するか調べて列位置を保存する。1行目のタイトル行は不変とする。
    ・「通販管理」の注文番号(=来店日)の日付を見て「来店記録」の同じ日付の最後に配列に入れた顧客の購入履歴の行を挿入する。・通販で購入した顧客履歴は「来店記録」の店舗を"通販"とする。

    ○実際の運用
    1)「通販管理」で該当者を選択
    注文番号08051019の竹下を含まずに、残りの加藤、沖原、保坂の名前欄を選択
    2)マクロを実行
    注文番号を年月日に変換、来店日として配列に保存される
    3)「来店記録」に転記される
    「来店記録」の来店日に該当する場所に店舗"通販"として挿入される。

    店舗 会員番号 旧会員番号 会員資格 名前 フリガナ 来店日 担当 売上 ポイント バッグポイント 累計P数 コメント 商品名 商品番号
    新宿 D00572 D572 正 春丘 ハルオカ 2008/5/10 長岡 20000 10  36 クーポンご利用されました XXカットソー,VVパンツM,IITシャツ A080102,D070604,A080201
    新宿 D00396 D396 正 服部 ハットリ 2008/5/10 長岡 5000 2  12  GGショール F080203
    原宿 D00645 D645 正 坂下 サカシタ 2008/5/10 佐藤 10000 5 1 108  JJジャケット3,EEパンツ2 C080402,D080601
    原宿 L00239 L239 正 杉本 スギモト 2008/5/10 佐藤 4000 2  23 本日より正会員 OOキャミ2 A080607
    通販 C02022 1687 正 加藤 カトウ 2008/5/10 29000 29000 14  24 本日より本会員。 XXカットソー,IITシャツ A080102,A080201
    上野 D00146 D146 仮 落合 オチアイ 2008/5/11 長岡 8000 4 1 5 プレゼントとのことでした PPバッグ G080701
    上野 C00148 148 仮 脇永 ワキナガ 2008/5/11 長岡 9000 4  4  ZZサンダル F080706×2,
    上野 C01329 1329 正 川畑 カワハタ 2008/5/11 吉田 15000 7  51  LLリング,UUネックレス H080701,H080601
    上野 D00638 D638 正 長浜 ナガハマ 2008/5/11 吉田 6000 3  10  RRストール赤 J080703
    通販 C01812 1534 正 沖原 オキハラ 2008/5/11 5000 4400 2  179 本日より本会員。 OOキャミ2,JJジャケット3 A080607,C080402
    新宿 D00638 D638 正 長浜 ナガハマ 2008/5/12 長岡 -6000 -3  -1 107 不良品とのこと RRストール赤 J080703
    新宿 C03825 3825 正 山内 ヤマウチ 2008/5/12 吉田 12000 6  15  OOキャミ2,UUネックレス A080607,H080601
    通販 C01609 884 仮 保坂 ホサカ 2008/5/12 9400 8800 4  18 プレゼントに VVパンツM,EEパンツ2,GGショール D070604,D080601,F080203

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません