エクセル初心者です。文章だけで説明できるか自信がないですが、どなたか助けてください。
隣接した列に時間とそれに対応した数値が打ち込まれた100行ほどのデータが2つある。
EX、A列(時間:秒)1行=2.003、2行=4.05、3行=8.002…(行が進む ほど大きくなる)
B列(数値)1行=10、2行=5、3行=4(ランダム)
C列(時間:秒)1行=1.001、2行=2.2、3行=7.9…(行が進む ほど大きくなるがA列と一緒とは限らない)
D列(数値)ランダム
このような場合に、時間に対応した数値はそのまま(AとB,CとDは連 動)で、時間を似た数字でそろえる(少数点1桁くらいの精度)場合
どのような操作が最も簡便でしょうか?
EX、
A列1行=空欄、C列1行=1.001
A列2行=2.003、C列2行=2.2
A列3行=8.002、C列3行=7.9
イメージがつきにくいと思いますが、補足で説明させていただきます
ので、どなたか、私に付き合って、上記のファイル処理を達成させて
ください。
実際には、時間と数値の組み合わせが20パターンほどあり、
似た時間で並べて解析したいのですが、一つずつ合わせていくのでは
膨大な時間がかかってしまいそうです。。。
何卒よろしくお願いします。
No.1
- 回答日時:
>時間を似た数字でそろえる
最終目的である、ここが解りません。
似たような数字とは、どういう定義ですか?
数字は、同じor異なるしかあり得ず、似たような・・・という抽象的な表現では他人には理解出来ませんよ。
また、”そろえる”とは、具体的にどうしたいんでしょ?
後半の例は、前半の例を操作した(あなたの言うところの”そろえた”)結果ですか?
A1が空欄であったり、前半例のA2=4.05が無くなったりしていますが、そのルールがさっぱり解せません。
こういう並びの数列を、こういう並びの数列に並び替えたい。
並び替えのルールは、こうこうである。
という風に具体的に質問して下さい。
エクセル初心者以前の問題です。
この回答への補足
何とか理解しようと試みていただいて
ありがとうございます。
補足させていただきます。
計時時間毎に検出される成分の量を解析したいというのが目的で、
検出時間と検出量が、それぞれA列、B列となっています。
ですが、検出時間には、ずれが生じており、小数点1ケタ(ほどの範囲
で時間をそろえて、各検出量を比較したいのです。
EX、
A列1行=空欄、C列1行=1.001
A列2行=2.003、C列2行=2.2
A列3行=8.002、C列3行=7.9
についてですが、適当に書きすぎました。小数点1ケタなので、
正しくは、下記のようになります。
A列1行=空欄、C列1行=1.001
A列2行=2.003、C列2行=空欄
A列3行=空欄、C列3行=2.2
A列4行=4.05、C列4行=空欄
A列5行=8.002、C列5行=7.9
です。
数値が小数点1ケタで合わない場合は、下の行にずれていき、
他列の数値と合うところで、表示される。ようにしたいです。
ご指摘のように、簡潔に説明できなくてすみません。
質問を変えて、
数値の幅を決めて(例えば、2から4)、行列の範囲を指定した
のち、特定の行に、その数値をかえすという方法だけでも
ご存じでしたら、教えてください。
もちろん、上の解決法があれば、ベストです。
No.2
- 回答日時:
こんにちは。
A列1行=1.001、C列1行=空欄
A列2行=2.003、C列2行=空欄
A列3行=2.2、C列3行=空欄
A列4行=4.05、C列4行=空欄
A列5行=8.002、C列5行=7.9
(最後の行のデータ偏差は0.1以上ありますが・・・)
という結果でもよいでしょうか?(重複しないデータは左寄せ)
良ければ方法を紹介します。
No.3
- 回答日時:
#2です。
>似た時間で並べて解析したいのですが、
ということは、やはりデータの左右の場所が変わると都合が悪いですね。
前準備が多い方法で申し訳ありませんが、方法を紹介します。
1)新たに<C>列を挿入して、データのある全ての行に数値で「1」を入力
同様に<F列>には数値で「2」を入力。
(データのインデックスとして使います)
2)<A,B,C>列のデータの下に<D,E,F>列のデータをカット&ペーストする。
3)<A,B,C>列を選択し、上部のメニューから、
「データ」→「並べ替え」を選択
「最優先されるキー」を「A列」、「昇順」にチェックを入れて「OK」
4)以下のマクロを標準モジュールに登録して実行
(登録・実行方法が分からなければ、解説します)
Sub test2()
Dim k As Integer
Dim m As Integer
Dim val_A As Double
Dim val_B As Double
Dim val_C As Double
Dim threshold As Double '近似データの判定閾値
threshold = 0.1 '閾値を変更するときはココを変えてください
k = 1 'データ探索開始行です。見出し行がある場合は2にしてください
m = k
'近似データの抽出
Do
If Cells(k + 1, "A").Value < Cells(k, "A").Value + threshold Then
Cells(k, "D").Value = Cells(k + 1, "A").Value
Cells(k, "E").Value = Cells(k + 1, "B").Value
Cells(k, "F").Value = Cells(k + 1, "C").Value
Rows(k + 1).Delete
End If
k = k + 1
Loop Until Cells(k + 1, "A") = ""
'左右データ位置の復元
Do
If Cells(m, "C").Value = 2 Then
val_A = Cells(m, "A")
val_B = Cells(m, "B")
val_C = Cells(m, "C")
Cells(m, "A") = Cells(m, "D")
Cells(m, "B") = Cells(m, "E")
Cells(m, "C") = Cells(m, "F")
Cells(m, "D") = val_A
Cells(m, "E") = val_B
Cells(m, "F") = val_C
End If
m = m + 1
Loop Until Cells(m, "A") = ""
'作業カラムの削除
Columns("F").Delete
Columns("C").Delete
End Sub
あくまで、100行程度のデータで使うことを前提にしていますので、
大規模なデータでは、遅くて使えないと思います。
なお、近似データは2つまでと仮定していますので、
3つ以上ある場合は修正が必要です。
駄文に付き合っていただき、ありがとうございます。
回答者様のマクロ文?をコピペして、実行してみたら、
できました!!!感動です。ホントに助かります。
>なお、近似データは2つまでと仮定していますので、
>3つ以上ある場合は修正が必要です。
とのことですが、近似データを4つにできれば完璧なの
ですが、4つに修正する方法もご教授願えないでしょうか?
やり方のヒントだけでも結構ですので、よろしくお願いします。
ただ、これだけでも大満足です。ホントにありがとうございました!!!
No.4
- 回答日時:
#2です。
うまくいって幸いです。
>近似データを4つにできれば完璧なのですが、4つに修正する方法もご教授願えないでしょうか?
A列とC列の中に0.1以内の近似するデータが3つ以上存在するのでしょうか?
それとも、別の列、例えば
<A,B><C,D><E、F><G、H>というようにデータが複数あるという意味でしょうか?
補足説明をしていただけないでしょうか?
今日は用時があるので、回答は明日以降になるかもしれません。
この回答への補足
また、曖昧な文章を書いてしまってすみません。
>>近似データを4つにできれば完璧なのですが、4つに修正する方法もご教授願えないでしょうか?
は、回答者様のご指摘の後者
>それとも、別の列、例えば
><A,B><C,D><E、F><G、H>というようにデータが複数あるとい>う意味でしょうか?
です。つまり、A,C,E…列には時間データが、B,D,F…には数値データ
が並んでおり、<A,B><C,D>の組み合わせで構成されています。
>今日は用時があるので、回答は明日以降になるかもしれません。
わざわざ、明記していただいてありがとうございます。
懇切丁寧なご対応、誠に感謝しております。
No.5ベストアンサー
- 回答日時:
4組のデータに対応した修正版を紹介します。
使い方は2組の場合と同じように、インデックスの列を追加して、
それぞれ1、2、3、4の数値を入力してください。
カット&ペーストで<A,B>列にして、昇順で並び替えてください。
test3()を実行すれば、希望の結果が得られると思います。
データ組の数は変数にしています。2以上であれば問題なく動作するはずです。
注意点
1)検証が十分ではないので、プログラムに間違いがあるかもしれません。
データ保存後、希望どおりの結果になっているか確認してください。
2)例えば、4組のデータの場合、24列(A~X)を作業列として使いますので、
4組(A~H)以外は空白セルにしておいてください。
3)列幅が足りず、表示が狂う(見かけ上桁落ちする)場合があります。
最終的に列幅を調整してください。
4)前準備も自動化が可能です。興味があれば勉強して、
自動化を試みてください。
Sub test3()
'4組データ対応版
Dim k As Integer
Dim k0 As Integer
Dim m As Integer
Dim p As Integer
Dim r As Integer
Dim s As Integer
Dim DATA_Set As Integer
Dim threshold As Double
DATA_Set = 4 'データの組の数
threshold = 0.1 '閾値を変更するときはココを変えてください
k0 = 1 'データ探索開始行です。見出し行がある場合は2にしてください
'近似データの抽出
k = k0
Do
If Cells(k + 1, "A").Value < Cells(k, "A").Value + threshold Then
r = Application.WorksheetFunction.CountA(Range(Cells(k, "A"), Cells(k, "A").End(xlToRight)))
For p = 1 To 3
Cells(k, p + r).Value = Cells(k + 1, p).Value
Next p
Rows(k + 1).Delete
Else
k = k + 1
End If
Loop Until Cells(k + 1, "A") = ""
'データ位置の復元
For m = 1 To DATA_Set
For s = 1 To DATA_Set
k = k0
Do
If Cells(k, m * 3).Value = s Then
For p = 1 To 3
Cells(k, 3 * DATA_Set - 3 + 3 * s + p).Value = Cells(k, m * 3 - 3 + p).Value
Next p
End If
k = k + 1
Loop Until Cells(k, "A") = ""
Next s
Next m
'作業カラムの削除
Range(Cells(1, 1), Cells(k - 1, DATA_Set * 3)).Columns.Delete
For m = DATA_Set To 1 Step -1
Range(Cells(1, m * 3), Cells(k - 1, m * 3)).Columns.Delete
Next m
End Sub
早速の修正版作成ありがとうございます。
無償でここまで、やっていただいてホントに恐縮です。
実行してみましたが、完璧です。
これを機会に、マクロを勉強してみようと思います。
また、ほかの質問を投稿するかもしれませんが、
その時は、またお世話になるかもしれません。
よろしくお願いします。
これまで、このサイトを活用していて、一番助かりました。
ポイント20点では足りないです。。。
ホントにありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの大きなシートでグラフを見つける 4 2022/07/28 10:07
- Excel(エクセル) Excel 2019で質問があります。 計測器のデータをExcelで記録したんですが、1秒刻みで記録 4 2022/09/07 22:46
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- 数学 すべての自然数とすべての実数を1対1で対応させる(すべての実数を一列に並べる)方法について 3 2023/05/26 17:14
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
- Excel(エクセル) Excelについて 3 2023/07/12 17:47
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Excel(エクセル) VBAで重複データを合算したい(時間) 1 2022/12/08 23:06
- 数学 登録番号と年月日と時間から作成した数字列を出来る限り小さくする方法 7 2022/06/03 16:10
- Excel(エクセル) エクセル関数のスペシャリストの方、教えてください。 写真のように A列にはデータ C列にはデータの中 7 2022/04/09 00:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
VBAで文字列を数値に変換したい
-
エクセル 同じ値を探して隣の...
-
エクセルで最初のスペースまで...
-
エクセル初心者です 関数の入れ...
-
2つのエクセルのデータを同じよ...
-
Excelで半角の文字を含むセルを...
-
LOOKUP関数を使えばいいのでし...
-
エクセル 文字数 多い順 並...
-
Excel、市から登録している住所...
-
A列がない・・・A列が非表示に...
-
エクセルの表から正の数、負の...
-
エクセルで文字が混じった数字...
-
エクセル(勝手に太字になる)
-
エクセルの項目軸を左寄せにしたい
-
重複行を削除して数値を合算し...
-
エクセルの並び変えで、空白セ...
-
EXCELで 一桁の数値を二桁に
-
基準日よりも古い日付の列を削...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
2つのエクセルのデータを同じよ...
-
エクセル(勝手に太字になる)
-
「B列が日曜の場合」C列に/...
-
エクセル 文字数 多い順 並...
-
EXCELで 一桁の数値を二桁に
-
エクセル 同じ値を探して隣の...
-
VBAで文字列を数値に変換したい
-
エクセルの並び変えで、空白セ...
-
Excelで半角の文字を含むセルを...
-
エクセルで文字が混じった数字...
-
Excel、市から登録している住所...
-
A列がない・・・A列が非表示に...
-
エクセルの表から正の数、負の...
-
[関数得意な方]教えて下さい・...
-
エクセルの項目軸を左寄せにしたい
-
エクセル 時間帯の重複の有無
-
Excelにてある膨大なデータを管...
おすすめ情報