プロが教える店舗&オフィスのセキュリティ対策術

データが下記のような形式になっています。
「あいう」「20010629」のデータを合計したいのですが。
345+124+.................

あいう,
20010627,
20010627,
,123
20010628,
,234
20010629,
,345

いうえ,
20010627,
,589
20010629,
,987

あいう,
20010629,
,124

なお、日付は同一日付が複数あります。またない日もあります。

A 回答 (4件)

Excelにデータが入力されていると仮定しています。


場所はA1から行方向で、「あいう,」、「いうえ,」などは前データとは1行開いているとしています。最初の「あいう,」はA1、「20010629,」はA7にあることになります。

VBAでユーザー定義関数を作りました。 =SuchiGokei(A1,A7)のように入力します。
直接文字を入れる場合は =SuchiGokei("あいう",20010629) のように入力します。

ツール→マクロ→Bisual Basic Edotor でVBE画面に移って標準モジュールを挿入し下記マクロを貼り付けて下さい。セルに変更があれば再計算するようにしてあります。

Public Function SuchiGokei(Moji As String, Ymd As String)
Dim rg As Range 'データの登録された最初の位置
Dim rw As Long '行カウンタ
Dim cMoji As String 'セルにある最初の文字
Dim dt As String 'セルにある日付または数値
Dim OK1 As Boolean '文字が一致したらTrue
Dim OK2 As Boolean '日付が一致したらTrue
Dim Total As Long '数値の累計

If Right(Moji, 1) <> "," Then Moji = Moji & ","
If Right(Ymd, 1) <> "," Then Ymd = Ymd & ","

Application.Volatile '自動計算関数にする
Set rg = Range("A1")
With rg
cMoji = .Offset(rw, 0): rw = 0 'ブロックの最初の文字を読む
While cMoji <> "" '未入力なら終わり
OK1 = False
If cMoji = Moji Then OK1 = True '一致した!

rw = rw + 1: dt = .Offset(rw, 0) '日付または数値を読む
While dt <> "" '未入力ならブロックの終わり
Select Case True
Case Right(dt, 1) = "," '右にカンマがあれば日付
OK2 = False
If dt = Ymd Then OK2 = True '一致した!
Case Left(dt, 1) = "," '左にカンマがあれば数値
If OK1 = True And OK2 = True Then
Total = Total + Val(Mid(dt, 2)) '合計する
End If
End Select

rw = rw + 1: dt = .Offset(rw, 0) '次の日付または数値を読む
Wend

rw = rw + 1: cMoji = .Offset(rw, 0) '次のブロックの最初の文字を読む
Wend
End With
SuchiGokei = Total
End Function
    • good
    • 0
この回答へのお礼

中身はさっぱり理解できませんでしたが、
何回かトライしてみたら出来ました。
なにかとんでもないお手数をお掛けした
ようで申し訳ありません。
本を買って意味を理解しようと思います。
ありがとうございました。

お礼日時:2001/07/15 15:45

>文字が同一であるものの同じ日付の一行下の数字


>を合計したいのですが。

このレベルでは理解していて、その考えを踏まえてNo.2の回答を書いています。
アルゴリズムを作成する大きな流れのみ書きました。
言語は何か分からないのですが、もっとコーディングレベルの回答を書いた方がいいですか?
コメントに書いてもらえれば作成しますが、用事があるので時間が多少かかるかもしれません。
    • good
    • 0

文字と日付が該当する値の後の数値を集計するアルゴリズムがしりたいのでしたら、



頭からデータを読み込みながら
文字、日付、数値の判断を行って(ここが一番面倒なかんじですね)
決まった文字、日付の後に出てくる数値の集計を行うループを作ってあげれば
いいのでは?

この回答への補足

説明不足ですみません。
文字が同一であるものの同じ日付の一行下の数字
を合計したいのですが。

補足日時:2001/07/14 15:58
    • good
    • 0

この質問でなに回答してほしいのかよく分からないのですが?



データを見た感じでは、
文字、日付、数値
と言う形にまとめればいいと思うのですが、

どうゆう条件の中で何を変えようとしているのかよく分かりません?
    • good
    • 0

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