05-11-2018 09:31 AM
manakaと申します。
表題の件で悩んでおります。
配列には、1列目に文字、2列目に1ケタの数字、3列目には1ケタ以上の数字が入っています。
まず、配列の2列目をみて、該当する値のものだけを抜粋します。
(例えば3が入力されている指標の行だけを抜き出します)
→ここまでは、該当する値のみに絞るだけなので出来ました。
今度はその絞られた結果の3列目をみて、並べ替えます。
(つまり、2列目に3と入力されているものだけで再ソートします)
悩んでいる点は、
csvを「スプレッドシート文字列を配列に変換」で処理していき、ネットで見つけたソートができるVIで
ソートをかけたのですが、3列目の1ケタ以上の数字を文字としてみてしまっているからか
10000、152、13800をソートしても、10000、13800、152となってしまいます。
長くなりましたが、初歩的なことですみません。
文字と数値が混ざっている配列で上記のようなことをしたい場合どのようにしたらよいのでしょうか。
どなたか教えて頂けたら幸いです。
解決済! 解決策の投稿を見る。
05-11-2018 10:01 AM
文字列があるために、数値も含めて文字列で格納された文字列2D配列で、数値は数値でソートしたいということと思います。
1つの方法は、一旦、数値は数値にして、それでソートする方法です。ここで、LabVIEWのソート関数はとても強力で、クラスタをソートすると、クラスタ内の順序を優先順位にクラスタのままソートしてくれますので、元の配列を一旦、「3列目の数値、1列目の文字、2列目の文字(1桁の数字ですがここでは効かないので文字のままにする)」からなるクラスタの1D配列にしてソートしてしまいます。ソートしたら、For文でもう一度「1列目の文字、2列目の文字、3列目の数値(を文字列に戻す)」で2D配列化すれば、あたかも元の文字列2D配列を3列目でソートしたようになります。なお、3列目の数値の次が1列目の文字になっていますので、3列目の数値が同じものに関しては1列目の文字の順に並びます。
(これを使うと、2列目の1桁の数字も一緒にソートすることもできます。クラスタ化の優先順位を、「2列目を数値にしたもの、3列目を数値にしたもの、1列目の文字」の順にクラスタにして1Dソートすると、2列目が同じものが一旦まとまり、その中で3列目の数値でソートされ、という風な順になります)
05-13-2018 07:58 PM
M.Shiraishi様
早速のご返信ありがとうございます。
そして、悩みも一瞬で解決されました。いつも分かりやすい解説をありがとうございます。
頂いたサンプルで勉強させて頂きます。
なかなか応用力がなく、いつもつまずいてしまいます。大変助かりました。