アプリ版:「スタンプのみでお礼する」機能のリリースについて

 うちは単純にExcel(VER.97)で顧客データを管理しているのですが、お客さまからのメールをばらばらにペーストして、振込用紙に住所とかを印刷したり、以前の注文商品がなんだったかを見るようにしています。

 たとえば、ショッピングカートでメールを受注すると、


『購入商品情報』
----------------------------------------------------------------------
(商品1)
品番:SND-R-R6
品名:サンドストーン
単価:30円


という感じにメールが送られてきます。

 これを、まるごとメールの文章をExcelにペーストすると、行数が多い文だけペーストに時間がかかります。
 でも、まるごとペーストすると、すべての内容がA列に入るので、何か計算式を使えば、一発で任意の場所にそのデータの値を持っていけるのではと思うのです。

たとえば、
「[商品1] という文字列と同じ列の、 [商品1] の次の行のセルの値を返す 」
「[商品1] という文字列と同じ列の、 [商品1] の次の次の行のセルの値を返す 」

という計算式。これが使いたくてしょうがないのですが、計算式の辞書を片手に苦心しましたが分からない・・・

もしご存知なら助けてください~よろしくおねがいします。

A 回答 (3件)

#1で回答を入れたものです。

実のところ質問の内容を捉えていませんでした。VBAでないと出来ないのではとのご回答もあり、再度下記を載せてみます。質問の内容を明確にするためにもしたいことは下記(1)と(3)のようなものでしょうか。
(1)まずエクセルのSheet1にテストデータを作ります。セルA1からA16までです。
(商品1)
品番:SND-R-R6
品名:サンドストーン
単価:30円
品番:SND-R-R7
品名:ノート
単価:51円
品番:SND-R-R12
品名:消しゴム
単価:100円
品番:SQT-R-R99
品名:筆箱
単価:200円
品番:AAB-Y-R10
品名:マーカー
単価:130円
Sheet1にボタンを1つ貼りつけておきます。
Sheet1に貼りつけが終わるとボタンをクリックします。
(2)VBEのModule1に
Sub test01()
d1 = Sheets("sheet1").Range ("a2").CurrentRegion.Rows.Count ' この行は上の行の右端に続けてください
d2 = Sheets("sheet2").Range("a2").CurrentRegion.Rows.Count ' この行は上の行の右端に続けてください
k = d2 + 1
For i = 1 To d1
a = Worksheets("sheet1").Cells(i, 1)
 If Left(a, 3) = "品番:" Then
  Sheets("sheet2").Cells(k, 1) = Mid(a, 4, 10)
  a = Worksheets("sheet1").Cells(i + 1, 1)
  Sheets("sheet2").Cells(k, 2) = Mid(a, 4, 10)
  a = Worksheets("sheet1").Cells(i + 2, 1)
  Sheets("sheet2").Cells(k, 3) = Mid(a, 4, 10)
  k = k + 1
 End If
Next i
End Sub
を作ります。
またSheet1のイベントプロシージャーとして
Private Sub CommandButton1_Click()
test01
End Subを作る。
(3)前記ボタンをクリックすると、Sheet2のA2からC6に
SND-R-R6サンドストーン30円
SND-R-R7ノート51円
SND-R-R12消しゴム100円
SQT-R-R99筆箱200円
AAB-Y-R10マーカー130円
が出来ます。
(4)仮定があります。貼りつける前に毎回Sheet1はクリアーしてください。VBAでクリアーも可能。品番、品名、単価はこの順序でならんでA2セル以下に続いてSheet1に入ってくるものと仮定しています。品番は10桁以下と仮定しています。品番:、品名:、単価:はこのままの言葉で入ってくるものとします。これらの仮定は外してもプログラムを複雑にすれば対処可能と思う。
    • good
    • 0
この回答へのお礼

こんにちは、るるるーです。

丁寧にご回答頂いて、びっくりしました。お忙しい中本当にありがとうございました。

でもでも、
(1)まずエクセルのSheet1にテストデータを作ります。セルA1からA16までです。

はできましたが、

Sheet1にボタンを1つ貼りつけておきます。
Sheet1に貼りつけが終わるとボタンをクリックします。

ここからが分かりません。オートシェイプで形を作るのがぜいぜい・・・
VBEとマクロがなんであるか、Module、イベントプロシジャーなどの意味がわからないのです。

imogasiさんと私の知識に雲泥の差あり・・・

いろいろ出来て大変便利そうなのですが、難しいですね。計算式でできないか模索中です・・・

大変詳しく時間をかけて説明して説明してくださっているだけに、申し訳ない気持ちでいっぱいです。

もうちょっとがんばってみますね。
すみません&ありがとうございました。

お礼日時:2002/07/18 20:02

こんにちは。



最終的にどんな形に持っていきたいのでしょうか?
データベース形式のシートにデータを写したいって事でしょうか?
↓こんな感じで。

   A    B    C    D
1 [顧客] [品番] [品名] [単価]
2 田中  SDR  サンド   30
3 加藤  DDS  ランド   50



関数だけでは難しい気がします。
マクロを使う必要がありそうな。。
    • good
    • 0

問題の意味が捉えにくいのですが、的外れなら済みません。


(1)=OFFSET()という関数があります。これは使えませんか。A1からB3に下記のデータをいれて
12
23
34
例えばC3に=OFFSET(A1,1,1)-->3,=OFFSET(A1,2,1)
-->4です。()内に入れる項目はそのセルを基準にして、真中は、それ初項のセル自身を1として、下へ何行、右はそれ自身の列を1として、右へ何列を入れます。マイナスも指定可能でそれぞれ、上行へ、左列への意味になります。
(2)もう一つ。送る方のセルから発想して難しくなって
いませんか。受ける方のセルに関数式をいれるのですよ。また=A1なども関数式と同類に考えないと。
言いたい事はA1のセルの値をD1にもって来たいなら、
「D1セルに」=A1と入れれば良いことです。A1->D1をするのにA1セルにどうしようと思っていませんか。(思い過ごしかな?判ってるワイと怒らないで下さい。)

この回答への補足

offset関数も考えたのですが、探した関数の本には、「セルの基準値がセル番号(「A1」とか)」のものしか載っていなかったので、それを文字列に対応できるように応用できなかったのです・・・。



こちらではもうすこし具体的でしょうか?

(Sheet1のなかみ)←メールをそのままペースト

   A          
1 [商品1]
2 品番:SND-R-R6
3 品名:サンドストーン
4 単価:30円
5 -----------
6 [商品2]
7 品番:SND-R-R8
8 品名:サンドストーン
9 単価:50円


(Sheet2のなかみ)←こちらに計算式をいれて、あとで振込用紙などフォームに加工する予定

   A       B         C         D  
1 購入商品情報   品番        品名        単価   
2  [商品1]   品番:SND-R-R6  品名:サンドストーン  単価:50円
3  [商品2]   品番:SND-R-R8  品名:サンドストーン  単価:50円

もしできれば、「品番:」「品名:」「単価:」は抜きたいのですが、無理ならこのままでも大丈夫。


VBEとかマクロもやってみようと思ったのですが、やったことがなくて、ボタンを作る事が出来なくて挫折・・・

補足日時:2002/07/18 20:03
    • good
    • 0
この回答へのお礼

お忙しいところ質問の回答ありがとうございます。

 こんなかんじでわかりますか?

 本で調べたけど、どうしてもわからなくて、教えて!gooのことを会社の子に教えてもらい、初めて質問しました。今日改めてみてみると、追加の質問もたくさんあるし、すごく親身になって回答を探してもらって、来てよかった♪もうすこしはじめから具体的に質問していたらよかったなと思います。

 やっぱり計算式だけでは無理でしょうか?今日、はじめて「マクロの記録」っていうのをやってみると、行を追加したり、計算式を入れたり、書式をコピーしたりが一度でできてびっくりしました。
こわかったので、使った後は作ったマクロを消しちゃいましたけど。(間違って他のファイルに使いそうなので)
でも、抽出はわかりませんでした。1歩ずつすすんでみます。

どうもありがとうございました♪もしお時間があるようならまた教えてください。

お礼日時:2002/07/18 20:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!