No.2ベストアンサー
- 回答日時:
数学の分野ですね。
マクロを使わずとも関数で十分代用可能です。
1,000 と -1,000 を同じとみなすには、絶対値を取るのが普通です。
絶対値を取る関数は ABS になります。
あとはIF関数で二つの値を比較して等しければ "*" を表示させるだけで良いので、
=IF(ABS(1000)=ABS(-1000),"*","")
などでしょうか。
または、数値を二乗してマイナスの符号を消してしまうのも方法です。
二乗は、-1,000*-1,000 でも代用できますし、関数ならば POWER になります。
あとはIF関数で上記と同様に、
=IF(POWER(1000,2)=POWER(-1000,2),"*","")
こんなところでしょうか。
ご回答ありがとうございます。マクロを使わなくてもよさそうなのはわかったのですが、データが混在している中で、値 "a"と"-a"を判断させるには
どうしたらよいでしょうか?宜しくお願いいたします。
No.7
- 回答日時:
すいません、#5でソースコード書いてしまいました。
#4さんのローカルルールの指摘と入れ違いで書いてしまいました。
禁止事項、ネチケットを認識不足ですね、再確認します、失礼しました。
No.6
- 回答日時:
こんにちは。
最近他の方への回答でも書かせてもらいましたが、VBAの知識をお持ちでコードのどこかが解らないとおっしゃるなら、#4さんが仰るようにご自分で検討されたコードを載せるべきだと思います。VBAといえども、プログラムソースは知的財産です。本来ならお金を払って開発を依頼するものだと思います。それをご自分でやられるつもりなら一から人に頼るのはいかがなものでしょうか。
今回のご質問は、同じ列に(A列とします)1,000 と -1,000などのデータが入っており、その中から相殺できないデータを探して未回収とするということで考えて宜しいですか?20,000件という量のデータを探すのは苦労があるとお考えなのは解ります。私なら、B列にABS関数で絶対値を表示させ、C列にはあらかじめ"*"を全てに入力しておきます。その状態でピボットテーブルを作成し、行をB列の絶対値、データをA列の金額の合計にしたら、相殺できない未回収金の絶対値がどれかわかります。オートフィルタでその絶対値の金額を表示させ、手作業でC列の"*"を消していきます。この方法である程度はデータを限定することができるのではないでしょうか。
#7さんの仰る通り、質問の流儀を弁えず失礼致しました。
ご教示頂いた内容を参考にしてやってみます。
貴重なお時間頂きありがとうございました。
No.5
- 回答日時:
こんな感じでしょうか? 全然違っていたらごめんなさい。
相殺イメージがわからなかったので、重複を考慮してみました。
sub test()
'Cells(行数,列数)
Dim kingaku As Double
For i = 1 To 10
kingaku = Cells(i, 1) * -1 ' 1=A
If (Cells(i, 2) = "*") Then ' 既に比較されていた場合
GoTo next_i
End If
For j = i + 1 To 10
If (kingaku = Cells(j, 1)) Then ' 金額の比較
If (Cells(j, 2) <> "*") Then ' 既に比較されていた場合
Cells(i, 2) = "*" ' 2=B
Cells(j, 2) = "*" ' 2=B
' Cells(i, 3) = j ' 3=C 相殺された、相手の行
' Cells(j, 3) = i ' 3=C 相殺された、相手の行
GoTo next_i
End If
End If
Next j
next_i:
Next i
End Sub
No.4
- 回答日時:
こんにちは。
>システムからデータをDLして未収金が正しく回収されたか確認するため
>(未収金計上 1,000 未収金回収 -1,000 が揃って、回収完了となります)
私も会計処理はしていましたし、相手から、そのいうシステムの請求書をもらって付け合わしていました。しかし、時に、それが大幅に狂うときがあります。私は、相手の請求の裏返しのものをパソコンで作っていました。
今、ご質問にあるのは、同じ列にあるという意味だと思います。国内会計では、非常に特殊な処理の気がします。会計方式が違うので、国際的な取引のときにそうしうた請求方式があります。ただし、通常は、Debit & Credit ですが。
会社名はひとつですか?会社名が複数混じっているなら、当然不可能ですね。ソートして、人間の手によるものぐらいしか考えられません。いずれにしても、私の考えているとおりなら、よほどVBAが得意でないと、ここでアドバイスしたぐらいでは、難しいような気がします。まして、コードを回答者が最初から書くなんていうのは、ここのローカル規約に触れてくると思います。今、自信がないようでしたら、ソートして手作業でも、紙の上よりも遥かに便利だと思います。
もし、コードがある程度できているなら、レイアウトを付けて説明してください。ある程度はアドバイスは出来ると思います。
もし、私の想像どおりではなかったら、補足に、もう少し詳しくご説明ください。
ご回答ありがとうございます。
チェック対象となる金額は、ある項目でソートすることによって、縦に並んで表示されます。
ここまでデータを整えることができればあと少しかな、と思っていたのですが何だか難しそうですね。これからコードを書いていこうと思っているので現在コードはありません。
教えていただいた知識を元にして、もう少し検討してみたいと思います。
ご丁寧にありがとうございました。
No.1
- 回答日時:
マクロを使わなくても、A1に「1、000」B1に「-1、000」と入っているのでしたら、C1に
=IF(A1+B1=0,"*","")
でも良いでしょう。
但し、両方とも空白の時に「*」が表示されるのがいやな場合は、
=IF(A1=0,"",IF(A1+B1=0,"*",""))
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
VLOOKUPの列番号の最大は?
-
列方向、行方向の定義
-
エクセルで最初の行や列を開け...
-
エクセルマクロでオートフィル...
-
エクセルで離れた列を選択して...
-
VBA
-
エクセルマクロPrivate Subを複...
-
エクセルマクロ 並び替え 手動...
-
マクロで日付範囲指定してデー...
-
結合セルを含んだ並べ替え VBA
-
Excelの行数、列数を増やしたい...
-
エクセルで複数列の検索をマク...
-
Accessのレポートで繰り返し表...
-
VBAで結合セルを転記する法を教...
-
条件付きの標準偏差をVBAを用い...
-
エクセルで飛び飛びのセルの計算
-
Excel VBAでvlookup関数を使っ...
-
EXCEL VBA 文字列から電話番号...
-
エクセルのシートの大きさを変える
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
LEFT関数とIF関数の組み合わせ...
-
Excelの行数、列数を増やしたい...
-
列方向、行方向の定義
-
VBA 指定した列にある日時デー...
-
エクセルマクロPrivate Subを複...
-
Excel文字列一括変換
-
エクセル マクロ 範囲指定で...
-
Alt+Shift+↑を一括で行うには、...
-
CSVファイルの「0落ち」にVBA
-
VBAで結合セルを転記する法を教...
-
エクセルで複数列の検索をマク...
-
リストからデータを紐付けしたい
-
横軸を日付・時間とするグラフ化
-
エクセルで最初の行や列を開け...
-
エクセルのソートで、数字より...
-
エクセルマクロの組み方
-
☆Excel VBAでAVERAGE関数を使う...
おすすめ情報