vbaヘルプ-データを抽出する方法?
nシート1-次のデータがあります:
アレックス20
デレク30
リサ25
神戸60
シート2には次の3つの列があります:
10~30、30~50、50~70
シート1からデータを抽出し、それらが属するカテゴリの下のシート2に配置したい
シート2では、10~30歳未満にはアレックスとリサ、30~50歳未満にはデレクを、50~70歳未満には神戸をリストに入れます.シート1からデータを抽出し、それが属するカテゴリの下のシート2に配置する方法を教えてください.
このコードで私が間違っていることについて誰かが何か知っていますか?
Sub movedata()
Dim i As Long
LastRowを長い間暗くする
LastRow=Range( "B"&Rows.Count).End(xlUp).Row
For i=1 To LastRow
If Worksheets( "Sheet1").Cells(i、i).Value>= 10 And Worksheets( "Sheet1").Cells(i、i).Value<= 30 Then
Worksheets( "Sheet2").Range( "A2")= Worksheets( "Sheet1").Cells(i、i).Offset(-1、0)
ElseIf Worksheets( "Sheet1").Cells(i、i).Value>= 30 And Worksheets( "Sheet1").Cells(i、i).Value<= 50 Then
Worksheets( "Sheet2").Range( "B2")= Worksheets( "Sheet1").Cells(i、i).Offset(-1、0)
その他
Worksheets( "Sheet2").Range( "C2")= Worksheets( "Sheet1").Cells(i、i).Offset(-1、0)
Worksheets( "Sheet2").Range( "C2")= Worksheets( "Sheet1").Cells(i、i).Offset(-1、0)
終了の場合
次のi
End Sub
[移動元:マイクロソフトエデュケーション/オフィス/Excel]
返信リスト(回答:6)
そのようなシナリオを再現するのはあまりにも複雑すぎる.そしてそれがあなたのものと一致しないならば、私たちの解決策はあなたのために働かないでしょう.
このような要求の場合は、オリジナルのファイルのレイアウトを持つサンプルファイルを作成して、サンプルデータで埋められたサンプルセルと予想される結果を持つ色のセルを作成してください.
最良のファイルのコピーを作成し、必要なデータを匿名化します.このためにこのファイルをダウンロードしてください
リンク:MODAnonyzize.
Excelファイルを開く
シートタブを右クリック
「コードの表示」を選択してください
Ctrl-Mを押す
ダウンロードしたファイルを選択してインポートします
VBAエディタを閉じる
機密データを持つセルを選択します
ALT-F8を押す
マクロを選択してください
[実行]をクリックします
OneDrive
(または選択した他のオンラインファイルの声)にアップロードして、ダウンロードリンクをここに投稿します.
リンク:シェアー
ONEDRIVE
-ファイムアンドフォルダ-9FCC2F7D-DE0C-4CEC-93B0-A82024800C07
それから私達はファイルを見ることができ、解決策を見つけることを試みることができます.ご理解いただきありがとうございます.
アンドレアス.
PowerPivotおよびPower Query(別名Get&Transform)を備えたExcel 365 Pro Plus
年齢で分類された名前.
数式なし、VBAマクロなし.
https://www.mediafire.com/file/1w6pn9yir6t0wk8/03_19_20a.xlsx/file
https://www.mediafire.com/file/v1ox8fjlfvuyqrj/03_19_20a.pdf/file
HI、
あなたが非VBAソリューションに興味がある場合は、Sheet2のセルB3でこのアレイ式(Ctrl + Shift + Enter)を試して、下/右をコピーしてください.これが役立つことを願っています.
= IFERROR(索引(Sheet1!$ A $ 2:$ A $ 5、小さい(Sheet1!$ 2:$ 5>= Sheet2!B $ 1、Sheet1!= Sheet2!B $ 2、行(Sheet1!$ A $ 2:$ A $ 5)-ロウ(Sheet1!$ A $ 1))、行(1:1))、1)、 "")
応答3# ->にスキップ4 #SaranshH Ashish、
私はこの式を解釈しようとしていますあなたはあなたの公式全体の背後にあるあなたの論理の簡単な条件で説明しますか?それはうまくいきますが、私はそれを理解したいです
私は小さな機能と行関数を調べましたが、あなたがそれを使用している方法を理解していませんか?
例えば、私の質問のいくつかは次のとおりです.
1.なぜ=行(Sheet1!$ A $ 2:$ A $ 5)利回り2
2.なぜあなたは小さな機能を使わなければならないのですか?
3.索引関数を使用しているindex関数を使用していますか.index関数を使用しているのか、なぜ?
応答4# ->にスキップ6 #AshishMこんにちは、
これがあなたの質問に対する答えです:
- ROW()関数は結果として配列を生成します.その配列の値は2、3、4、5になります.したがって、2つの条件が満たされている場合は、行番号の配列を作成します.ワークシートの行番号をtableの行番号に変換するために1を引いています.
したがって、結果は1、2、3、4になります.- SMALL()関数は、結果が
- tableの行番号が最も小さい値
- tableの行番号が2番目に小さい値
- tableの行番号が3番目に小さい値
- 4番目に低いtable行番号の値
- いいえ.ほとんどの場合、MATCH()関数はINDEX()関数と共に使用する必要がありますが、常にそうであるとは限りません.INDEX()関数の行引数がSMALL()関数によって返されています.列の引数は1(最初の列)に固定されています.
これが明確になることを願っています.
Hisaranshmidha
お試してお試しください
サブ移動データ()
DIM SH1、ワークシートとしてSH2
DIM SCORESRNG、num範囲
DIM i、j、k長
SET SET=ワークシート(「Sheet1」)
SET SH2=ワークシート(「Sheet2」)
'' ''の出力データ開始行
i= 2
j= 2
k= 2
'' 'Sheet2
の古い出力データを削除するSH2.RANGE(セル(2、 "A").終了(XLTORIGHT)、セル(2、 "A").終了(XLDOWN)).クリアコンテンツ
SH1.ACTIVATE
SH1
で'' 'データ(数字)は行2
から始まりますscoresrng=.range(セル(2、 "b")、セル(行; count、 "b").終了(XLUP)
'' 'ループすべてのスコア数
SCORESRNG
の各数値ケースを選択NUM.VALUE
ケースは<30
ですSH2.Cells(i、 "A").値=.cells(num.row、 "a").値
i= i + 1 ''出力行増分
ケースは<50
ですsh2.cells(j、 "b").値=.cells(num.row、 "a").値
j= j + 1 ''出力行増分
ケースは<70
ですSH2.Cells(k、 "c").値=.cells(num.row、 "a").値
k= k + 1 ''出力行増分
終了
次のnum
で終わりますmsgbox "All Done"
終了SUB
あなたの説明に従って
行1は両シートのヘッダー用であり、データは2行目から下方に起動します.
入力データ
出力データ
選択ケースメソッドの選択に関する詳細が必要な場合は、下のリンクをクリックしてください
関連質問
- 複数のテーブルに散布ヘッダーを結ぶ
- VBA/VB.NETで複雑な文字列を作成する方法
- Excel 365
- Excelの "固定オブジェクトが移動する"エラーが表示されます(ただし、オブジェクトが見つかりません).
- Excel-データビジュアライザテーブルをVisioにインポートします
- 企業のExcelモデルへの既存の従業員へのアクセスを制限します
- VBA-Excel-DialogSheets.Show 2021-廃止予定?
- 評価日2式2の式2
- 範囲としてのVBA-BYVALターゲット原因コピーと貼り付け問題
- 2セルをマージするマクロを作成し、合計を取得するためにマージセルをグループ化します.