- ベストアンサー
Excelの値を特定の列に入れる方法
- Excelで特定の条件を満たす値を別の列に移す方法を教えてください。
- A列にある0以外の値をB列に移す方法を教えてください。
- Excelのデータを複数の列に分ける方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
A列に表示されている順番ではなく、数値の小さい順番に表示される方法ですが、それでも宜しいでしょうか? (例えば、A列の上から0,4,0,2,0,0,8,0,1と表示されている場合に、B列には1,2,4,8と表示されます) まず、B1セルに次の数式を入力して下さい。 =IF(ROWS($1:1)>COUNTIF(A:A,">0"),"",SMALL(A:A,ROWS($1:1)+COUNTIF(A:A,"0"))) 次にB1セルをコピーして、B2以下のセルに貼り付けて下さい。 以上で完成です。
その他の回答 (2)
- muunoy
- ベストアンサー率38% (70/183)
VBAならば以下のようなコードでとりあえずできます。 ほぼそのまま、使えるようにしたのですが、投稿時にインデントが削除されてしまうため、見づらくなってしまいました。 コピペして確認してみてください。 Sub TEST() '変数定義 Dim r As Long 'A列の処理対象行 Dim end_r As Long 'A列の最終行 Dim input_r As Long 'B列の入力行 With ThisWorkbook.Sheets("TEST") '処理対象となるファイルの指定(ここでは、マクロを埋め込んだファイルのシート名「テスト」) r = 1 '処理開始行で初期化 A列用 input_r = 1 '処理開始行で初期化 B列用 end_r = .Cells(1, "A").SpecialCells(xlLastCell).Row 'A列の処理対象最終行数を取得 Do While r <= end_r '繰り返し処理の判断:処理対象最終行まで繰り返す If .Cells(r, "A").Value <> 0 Then 'A列の処理対象セルの入力値が0でないかの判断→とりあえず数値0以外全てを対象としています .Cells(input_r, "B").Value = .Cells(r, "A").Value '処理対象セルの値が0以外なら、上から順にB列に値を入力 input_r = input_r + 1 'B列の処理対象行を増やす(次の処理用) End If ' r = r + 1 'A列の処理対象行を増やす Loop ' End With End Sub >0でない値 とのことでしたが、文字が入力されている可能性についてはわかりませんでしたので、下に参考となる質問・回答のURLを書きます。 http://okwave.jp/qa/q2872556.html 入力される可能性のある値の種類、 ワークシート関数での処理を希望しているかどうか、 使用目的 等々 詳細は、別途ご質問をたてていただけれますと、回答しやすいかと思われます。
- bari_saku
- ベストアンサー率17% (1827/10268)
オートフィルターをかけるか、ピボットテーブルを使ってゼロを対象外にするのが手っ取り早いかと。
補足
すみません、数値に乱数を用いてるのですけど大丈夫ですか?