OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

こんな扱いにくいデータ形式どうにかなりませんか?

  • すぐに回答を!
  • 質問No.104225
  • 閲覧数33
  • ありがとう数1
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 27% (41/150)

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

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

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

あいう,
20010629,
,124

なお、日付は同一日付が複数あります。またない日もあります。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.4
レベル13

ベストアンサー率 68% (791/1163)

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
お礼コメント
tsufu

お礼率 27% (41/150)

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

その他の回答 (全3件)

  • 回答No.1
レベル12

ベストアンサー率 33% (196/589)

この質問でなに回答してほしいのかよく分からないのですが? データを見た感じでは、 文字、日付、数値 と言う形にまとめればいいと思うのですが、 どうゆう条件の中で何を変えようとしているのかよく分かりません?
この質問でなに回答してほしいのかよく分からないのですが?

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

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

  • 回答No.2
レベル12

ベストアンサー率 33% (196/589)

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

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

お礼率 27% (41/150)

説明不足ですみません。
文字が同一であるものの同じ日付の一行下の数字
を合計したいのですが。
投稿日時 - 2001-07-14 15:58:09
  • 回答No.3
レベル12

ベストアンサー率 33% (196/589)

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

このレベルでは理解していて、その考えを踏まえてNo.2の回答を書いています。
アルゴリズムを作成する大きな流れのみ書きました。
言語は何か分からないのですが、もっとコーディングレベルの回答を書いた方がいいですか?
コメントに書いてもらえれば作成しますが、用事があるので時間が多少かかるかもしれません。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ