Excel編集についてのご相談

2件の相談がございます。

Excelファイルの編集についてですが、AからF列まで入力項目があり、500行ほどのExcelファイルがあります。C:\Users\ai21\Desktop\お困り.xlsx
・F列の項目が未入力の行をまとめて別シート(新規作成)へ移したい。
・F列に「2023/11」が入力されていた場合、その行をまとめて別シート(新規作成)へ移したい。

どなたか教えていただけますと幸いです。

こんにちは

基本的には以下の手順で可能かと思います。
1.対象のシートをReadRangeアクティビティ等で読み込み、内容をDataTableに格納します。(dtとします)
2.FilterDataTableアクティビティで、F列に相当する列を条件にフィルタします。
条件は空の場合 か 2023/11 になります。日付は格納されている書式によっては多少工夫が必要になるかもしれません。
3.2でフィルターしたDataTableを書き込みます。

ありがとうございました。
空白に関しては上手くできました。

2023/11ですが、私の説明不足で申し訳ございません。
結果として、F列に2023/11を含む行を別シートに移したい場合、どのような方法がございますでしょうか。

こんにちは

これは元のエクセルのデータの形式に依存します。
テキストとして扱われているなら、2023/11から始まるでフィルターします。

image

日付として認識されているなら、2023/11/1以上、2023/12/1より前の様にします。

image

これでうまくいかない場合は他の手段をとる必要があります。
例えば代入アクティビティで以下のようなLINQ式を使います。

filterDt = dt.AsEnumerable.Where(Function(r) CDate(r(5).ToString).ToString("yyyy/MM")="2023/11").CopyToDataTable()

(実際には中身が空の場合の対応が必要になりますのでご留意ください)

ありがとうございました。
教えていただいた手順でできました!

しかし完成したファイルを見ると、
空白の場合、上の方は空白の列が並んでいるのですが、下の方に行くと記入されたものもあります。
簡単に言うと、列の削除ではなく、列の並び替えになっているような感じです。
Excelファイル上の問題でしょうか。

こんにちは

上記に並べ替えの機能はありませんが、例えば同じシートに上書きしていませんでしょうか?
その場合、以前のデータが残っていると思います。

1 Like

おっしゃる通り上書きしていました…
新規作成でできました!
ありがとうございました。

今更で申し訳ないのですが、
New Date()←この()の中に変数を入れる方法はありますでしょうか。

こんにちは

Int32型変数を入れることができます。例えば

New Date(intYear, intMonth, intDay)

のようになります。

1 Like

教えていただいたやり方でできました。
ありがとうございます!

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.